- Manifest.json 文件格式
- 1、Demo 展示
- 2、Manifest.json 文件字段及解析
- 1. Chrome 插件所必需的 key
- 2. Chrome 应用商店所需的 key
- 3. Chrome 插件可选 key
- 3.1 action
- 3.2 author
- 3.3 background
- 3.4 chrome_settings_overrides
- 3.5 chrome_url_overrides
- 3.6 commands
- 3.7 content_scripts
- 3.8 content_security_policy
- 3.9 cross_origin_embedder_policy
- 3.10 cross_origin_opener_policy
- 3.11 declarative_net_request
- 3.12 default_locale
- 3.13 devtools_page
- 3.14 export
- 3.15 externally_connectable
- 3.16 homepage_url
- 3.17 host_permissions
- 3.18 import
- 3.19 incognito
- 3.20 key
- 3.21 minimum_chrome_version
- 3.22 oauth2
- 3.23 omnibox
- 3.24 optional_host_permissions
- 3.25 optional_permissions
- 3.26 options_page
- 3.27 options_ui
- 3.28 permissions
- 3.29 requirements
- 3.30 sandbox
- 3.31 short_name
- 3.32 side_panel
- 3.33 storage
- 3.34 tts_engine
- 3.35 update_url
- 3.36 version_name
- 3.37 web_accessible_resources
- 4.ChromeOS 可选的 Key
Manifest.json 文件格式
每个扩展程序的根目录中都必须有一个 manifest.json 文件,其中列出了有关该扩展程序的结构和行为的重要信息。
1、Demo 展示
1. 最小文件
{
"manifest_version": 3,
"name": "My Chrome Ext",
"version": "1.0.0",
"description": "Chrome Ext",
"icons": {
"48": "icon-48.png",
"128": "icon-128.png"
},
}
2. 增加 content_scripts
{
"manifest_version": 3,
"name": "Run script automatically",
"description": "Add Context Scripts",
"version": "1.0",
"icons": {
"16": "icon-16.png",
"32": "icon-32.png",
"48": "icon-48.png",
"128": "icon-128.png"
},
"content_scripts": [
{
"js": [
"content-script.js"
],
"matches": [
"http://*.example.com//"
]
}
]
}
3. 增加 service_worker
{
"manifest_version": 3,
"name": "Click to run",
"description": "Add Service Worker",
"version": "1.0",
"icons": {
"16": "icon-16.png",
"32": "icon-32.png",
"48": "icon-48.png",
"128": "icon-128.png"
},
"background": {
"service_worker": "service-worker.js"
},
"action": {
"default_icon": {
"16": "icon-16.png",
"32": "icon-32.png",
"48": "icon-48.png",
"128": "icon-128.png"
}
},
"permissions": ["scripting", "activeTab"]
}
4. 增加 action
{
"manifest_version": 3,
"name": "Popup extension that requests permissions",
"description": "Add Action",
"version": "1.0",
"icons": {
"16": "icon-16.png",
"32": "icon-32.png",
"48": "icon-48.png",
"128": "icon-128.png"
},
"action": {
"default_popup": "popup.html"
},
"host_permissions": [
"https://*.example.com/"
],
"permissions": [
"storage"
]
}
5. 增加侧边栏
{
"manifest_version": 3,
"name": "Side panel extension",
"version": "1.0",
"description": "Extension with a default side panel.",
"icons": {
"16": "images/icon-16.png",
"48": "images/icon-48.png",
"128": "images/icon-128.png"
},
"side_panel": {
"default_path": "sidepanel.html"
},
"permissions": ["sidePanel"]
}
2、Manifest.json 文件字段及解析
1. Chrome 插件所必需的 key
1.1 manifest_version
- 一个整数,用于指定扩展程序使用的清单文件格式版本。
- 唯一支持的值是 3。
1.2 name
- 一个字符串,用于在
Chrome应用商店、安装对话框和用户的Chrome扩展程序页面 (chrome://extensions) 中标识扩展程序。 - 长度上限为 45 个字符。
1.3 version
- 一个字符串,用于标识扩展程序的版本号。
- 一到四个以英文句点分隔的整数,用于标识此扩展程序的版本。下面几条规则适用于整数:
- 整数必须介于 0 到 65,535 之间(含 0 和 65,535)。
- 非零整数不能以 0 开头。例如,032 无效,因为它以零开头。
- 它们不能都为零。例如,0 和 0.0.0.0 是无效的,而 0.1.0.0 是有效的。
- 以下是有效版本的一些示例:
- “version”: “1”
- “version”: “1.0”
- “version”: “2.10.2”
- “version”: “3.1.2.4567”
- 比较从最左边的整数开始。然后,如果这些整数相等,则比较右侧的整数,依此类推。例如,1.2.0 是比 1.1.9.9999 更新的版本。
- 缺少的整数等于零。例如,1.1.9.9999 比 1.1 更新,1.1.9.9999 低于 1.2。
"manifest_version": 3, "name": "My Chrome Ext Name", "version": "0.0.1",
2. Chrome 应用商店所需的 key
2.1 description
- 一个
JSON字符串,用于描述Chrome网上应用店和用户的扩展程序管理页面上的扩展程序。 - 长度上限为 132 个字符。

{
"options_page": "index.html",
}
3.27 options_ui
指定 HTML 文件的路径,该文件允许用户在 Chrome 扩展程序页面更改扩展程序选项。
{
"name": "My extension",
"options_ui": {
"page": "options.html",
"open_in_tab": false
},
}
3.28 permissions
允许使用特定的扩展程序 API。
"permissions": [ "storage", "activeTab", "scripting" ]
3.29 requirements
列出使用扩展程序所需的技术。
"requirements": {
"3D": {
"features": ["webgl"]
}
}
3.30 sandbox
- 定义一组扩展程序页面,它们无权访问扩展程序
API或直接访问非沙盒化页面。 - 扩展程序的沙盒化网页使用的内容安全政策在
content_security_policy键中指定。 - 处于沙盒环境中会产生以下两个影响:
- 沙盒化页面将无权访问扩展程序
API,也无法直接访问未经过沙盒化的页面(可通过postMessage()与它们进行通信)。 - 沙盒化页面不受扩展程序其余部分使用的内容安全政策 (
CSP)(有自己的单独的CSP值)的约束。这意味着,例如,它可以使用内嵌脚本和eval。
- 沙盒化页面将无权访问扩展程序
{
"content_security_policy": {
"sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
},
"sandbox": {
"pages": [
"page1.html",
"directory/page2.html"
]
},
}
3.31 short_name
- 一个字符串,包含要在字符空间有限时使用的扩展程序名称的缩写版本。
- 长度上限为 12 个字符。如果未定义,将显示
name键的截断版本。
{
"short_name": "short name"
}
3.32 side_panel
标识要在 sidePanel 中显示的 HTML 文件。
{
"name": "My side panel extension",
"side_panel": {
"default_path": "sidepanel.html"
}
}
3.33 storage
声明托管存储区域的 JSON 架构。
{
"name": "My enterprise extension",
"storage": {
"managed_schema": "schema.json"
},
}
3.34 tts_engine
将扩展程序注册为文字转语音引擎。
{
"name": "My TTS Engine",
"version": "1.0",
"permissions": ["ttsEngine"],
"tts_engine": {
"voices": [
{
"voice_name": "Alice",
"lang": "en-US",
"event_types": ["start", "marker", "end"]
},
{
"voice_name": "Pat",
"lang": "en-US",
"event_types": ["end"]
}
]
},
"background": {
"page": "background.html",
"persistent": false
}
}
3.35 update_url
- 一个字符串,其中包含扩展程序的更新页面的网址。
- 如果是在
Chrome应用商店之外托管扩展程序,需要添加此字段。
{
"name": "My extension",
"update_url": "https://myhost. com/mytestextension/updates.xml",
}
3.36 version_name
- 一个描述扩展程序版本的字符串。例如
1.0 beta和build rc2。 - 如果未指定,则改为在扩展程序管理页面上显示
version值。
{
"version_name": "1.0 beta"
}
3.37 web_accessible_resources
定义扩展程序中可供网页或其他扩展程序访问的文件。
{
"web_accessible_resources": [
{
"resources": [ "test1.png", "test2.png" ],
"matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
}, {
"resources": [ "test3.png", "test4.png" ],
"matches": [ "https://web-accessible-resources-2.glitch.me/*" ],
"use_dynamic_url": true
}
],
}
4.ChromeOS 可选的 Key
4.1 file_browser_handlers
提供对 fileBrowserHandler API 的访问权限,该 API 允许扩展程序访问 ChromeOS 文件浏览器。
{
"name": "My extension",
"file_browser_handlers": [
{
"id": "upload",
"default_title": "Save to Gallery", // What the button will display
"file_filters": [
"filesystem:*.jpg", // To match all files, use "filesystem:*.*"
"filesystem:*.jpeg",
"filesystem:*.png"
]
}
],
"permissions" : [
"fileBrowserHandler"
],
}
4.2 file_handlers
指定 ChromeOS 扩展程序要处理的文件类型。
"file_handlers": [
{
"action": "/open_text.html",
"name": "Plain text",
"accept": {
"text/plain": [".txt"]
}
"launch_type": "single-client"
}
]
4.3 file_system_provider_capabilities
允许访问 fileSystemProvider API,以便扩展程序创建 ChromeOS 可以使用的文件系统。
{
"name": "My extension",
"permissions": [
"fileSystemProvider"
],
"file_system_provider_capabilities": {
"configurable": true,
"watchable": false,
"multiple_mounts": true,
"source": "network"
},
}
4.4 input_components
允许使用 Input Method Editor API。
{
"input_components": [{
"name": "ToUpperIME",
"id": "ToUpperIME",
"language": "en",
"layouts": ["us::eng"]
}]
}