Chrome扩展的核心:manifest 文件(上)
大家好,我是dom哥。我正在写关于 Chrome 扩展开发的系列文章,感兴趣的可以点个小星星。
Chrome 在全球浏览器市场份额独占 6 成,无论是对普通用户还是开发者,都是电脑里的必备利器。Chrome 无论是在性能还是 UI 交互方面都非常出色,而 Chrome 扩展则为开发者提供了接口,让开发者有能力自己编写代码使自己的 Chrome 更强大,更加定制化。
每个 Chrome 扩展项目的根目录中都必须有一个 manifest.json 文件,即清单文件。manifest 里会记录关于扩展的重要元数据、声明权限以及指定在网页和后台中运行的文件等等。
最简单的 Chrome 扩展项目
新建一个 crx-demo 目录,在里面新建一个 manifest.json 文件,目录结构如下:
crx-demo
└── manifest.json
这就是一个最简单的 Chrome 扩展项目了!接下来就是不断丰富它的细节。
manifest 字段最小集
manifest 大约有 20 多个配置项,但大部分都是可选配置。必须的配置项有且仅有下面 3 个!
{
"manifest_version": 3,
"name": "CRX Demo",
"version": "1.0.0"
}
是不是似曾相识,像不像前端项目里无人不知的 package.json 文件!
先不用追究每个字段的深层含义,这个稍后会逐个解释。接下来在 Chrome 里打开管理扩展程序 chrome://extensions/ 直接把 crx-demo 拽过来扔进去。或者你也可以 加载已解压的扩展程序。
在扩展程序里就能看到这个扩展了

manifest 支持配置的字段
必须的字段
"manifest_version"
指定 manifest 的版本。不同的版本支持的配置字段不一样,格式也不一样,之前是 2,现在是 3,将来会是 4。区别有点像通信领域的 3G,4G,5G 概念。
"manifest_version": 3
V2 版本的扩展 Chrome 在2024年6月份会停止支持,届时 V2 版本的扩展将无法加载。将来可能会迭代到 V4 版本,但官方尚没有消息。因此目前及未来很长时间将都是 V3 版本的 Chrome 扩展。
"name"
扩展名字。**没啥好说的。有长度限制,最多 45 个字。
"name": "your extension name"
"version"
扩展的迭代版本。这个迭代版本的格式很有讲究,不同于 package.json 里的 version 那般随意。
这里 version 的格式和 IP 地址倒是很像。要求如下:
- 最少 1 个最多 4 个整数用点号连接而成
- 每部分整数值域为 0-65535
下面是一些支持使用的版本示例:
"version": "1"
"version": "1.0"
"version": "2.10.2"
"version": "3.1.2.4567"
之所以这样设计,是为了方便 Chrome 扩展的自动更新。
推荐的字段
"description"
扩展的描述。一个好的描述是成功推销的第一步。最多 132 个字。
"description": "扩展的描述"
"icons"
扩展的图标。一图胜万言。
"icons": {
"48": "icon48.png",
"128": "icon128.png"
}
官方建议至少应该提供 128x128 和 48x48 两个尺寸的图标。128x128 的用于 Chrome Web Store,48x48 的用于管理扩展页面(chrome://extensions)。
值得注意的是,不支持使用 WebP 和 SVG 格式的图标。其他的格式 PNG,JPEG,GIF,ICO,BMP 都是支持的!
继续完善细节,给 manifest.json 加上 "description" 和 "icons" 字段
+ "description": "扩展的描述"
+ "icons": {
+ "48": "icon48.png",
+ "128": "icon128.png"
+ }
在 chrome://extensions 刷新扩展,可以看到已经变成了这个样子:

值得一提的是,"description" 和 "icons" 是你往 Chrome Web Store 发布扩展时必填的两个字段!
可选的字段
到目前为止,这个扩展还没有任何用处 ,只是看上去有了点雏形。
在下一篇将详细介绍 manifest 几个强大的可选项,它们将为 Chrome 扩展注入灵魂:
- "content_scripts": 向 web 页面注入 JavaScript 和 CSS。
- "background": 以 service worker 形式运行后台服务。
- "permissions": 权限管理,有些功能需要用户授权才能获得。
觉得不错可以点个小星星支持一下
Chrome扩展的核心:manifest 文件(上)的更多相关文章
- PHP核心编程--文件上传(包含多文件上传)
一.单文件上传 图片上传界面: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- 在半小时内从无到有开发并调试一款Chrome扩展(Chrome插件/谷歌浏览器插件)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_120 就在不久之前,我们目前这个毕业班的班长那日同学和我说,他正在公司开发Chrome扩展,看起来很高大上的技术,实际开发却非常简 ...
- 如何开发一个chrome扩展
chrome是一个不错的浏览器,web开发者工作中一般都会使用chrome做为默认浏览器,它有很多扩展,给浏览器补充了各种功能,增强了用户体验.chrome具体能干什么?怎么做出来的呢? chrome ...
- chrome扩展写法
最近看到公司同事经常写chrome扩展,来提高生成效率,回想想自己以前也写过chrome扩展,但是由于不经常写,也没做积累也都忘记了,现在重新回顾一下. 一.chrome扩展基本概念 chrome扩展 ...
- 如何写chrome扩展
转载:http://www.cnblogs.com/pingfan1990/p/4560215.html 最近看到公司同事经常写chrome扩展,来提高生成效率,回想想自己以前也写过chrome扩展, ...
- Chrome浏览器扩展开发系列之一:初识Google Chrome扩展
1. Google Chrome扩展简介 Google Chrome扩展是一种软件,以增强Chrome浏览器的功能. Google Chrome扩展使用HTML.JavaScript.CS ...
- Retrofit2文件上传下载及其进度显示
序 前面一篇文章介绍了Retrofit2的基本使用,这篇文章接着介绍使用Retrofit2实现文件上传和文件下载,以及上传下载过程中如何实现进度的显示. 文件上传 定义接口 1 2 3 @Multip ...
- PHP 文件上传服务端及客户端配置参数说明
文件上传服务器端配置: ·file_uploads = On, 支持HTTP上传 ·upload_tmp_dir = , 临时文件保存的目录 ·upload_max_filesize=2M, 允许上传 ...
- 基于python的selenium两种文件上传操作
方法一.input标签上传 如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方 ...
- Struts2之文件上传与下载
时间:2017-1-11 15:47 --使用commons-fileupload组件上传1.客户端 * method="post" * <input t ...
随机推荐
- embed简介
go embed 是 Go 1.16 中引入的特性,它允许将文件嵌入到 Go 代码中,以便在运行时访问这些文件.这对于将静态资源(如 HTML.CSS.JavaScript 文件)直接嵌入到 Go 二 ...
- 【Python爬虫】使用代理ip进行网站爬取
使用代理IP进行网站爬取可以有效地隐藏你的真实IP地址,让网站难以追踪你的访问行为.本文将介绍Python如何使用代理IP进行网站爬取的实现,包括代理IP的获取.代理IP的验证.以及如何把代理IP应用 ...
- 每日一题:vue3自定义指令大全(呕心沥血所作,附可运行项目源码)
1.VUE常用指令大全 本项目所有指令均为全局注册,使用时直接在组件中使用即可. 指令目录:src/directives 页面目录:src/views 具体可查看源码 1.1 权限指令 封装一个权限指 ...
- Vue3搭建后台管理系统模板
搭建后台管理系统模板 2.1项目初始化 今天来带大家从0开始搭建一个vue3版本的后台管理系统.一个项目要有统一的规范,需要使用eslint+stylelint+prettier来对我们的代码质量做检 ...
- 深入解析枚举(Enum):在程序设计中的应用与优势
深入解析枚举(Enum):在程序设计中的应用与优势 引言 在程序设计中,我们经常需要用到一组具名的常量,这些常量表示一些有限的离散状态或取值范围.例如,表示方向(上.下.左.右).星期几.性别等.为了 ...
- 超级实用!React-Router v6实现页面级按钮权限
大家好,我是王天- 今天咱们用 reac+reactRouter来实现页面级的按钮权限功能.这篇文章分三部分,实现思路.代码实现.踩坑记录. 嫌啰嗦的朋友,直接拖到第二章节看代码哦. 前言 通常情况下 ...
- Flask框架——详解URL、HTTP请求、视图函数和视图类
文章目录 1 什么是url? 2 为什么要有url? 3 如何应用url? 3.1 url和路由的区别. 3.2 url传参的两种 3.2.1动态路由传参 3.2.1.1 动态路由的过滤 3.2.2 ...
- js各种宽高的总结
1.clientWidth和clientHeight指元素的可视部分宽度和高度,就是padding+content如果没有滚动条,就是设定的宽度和高度 如果有滚动条,就是设定的宽度和高度减去滚动条的宽 ...
- Redis 6 学习笔记 1 —— NoSQL数据库介绍,Redis常用数据类型
NoSQL数据库介绍(了解) 技术的分类1.解决功能性的问题:Java.Jsp.RDBMS.Tomcat.HTML.Linux.JDBC.SVN,2.进一步地,解决系统功能扩展性的问题:Struts. ...
- LINUX基础知识和命令 二
LINUX alias (别名) 自定义命令=原始命令 原始命令中有特殊符@#%()请打上 引号,单双无所谓 例:vim /etc/sysconfig/network-scripts/ifcfg-en ...