创建Chrome插件的manifest.json文件,这是插件的元数据文件,用于定义插件的基本信息,权限,前台页面(如弹出窗口的HTML),以及其他脚本等。
以下是根据Chrome扩展Manifest V3规范的一个较全面的字段列表:
{
"manifest_version": 3,
"name": "Extension Name",
"version": "1.0",
"default_locale": "en",
"description": "A description",
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
},
"action": {
"default_popup": "popup.html",
"default_icon": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}
},
"author": "Author Name",
"automation": "allowed or not",
"background": {
"service_worker": "background.js"
},
"chrome_settings_overrides": {
"homepage": "http://www.homepage.com",
"search_provider": {
"name": "Search Provider Name",
"keyword": "keyword",
"search_url": "http://www.searchurl.com?q={searchTerms}",
"favicon_url": "http://www.faviconurl.com/favicon.ico",
"suggest_url": "http://www.suggesturl.com?q={searchTerms}",
"instant_url": "http://www.instanturl.com?&q={searchTerms}",
"image_url": "http://www.imageurl.com/search?q={searchTerms}&s=image",
"new_tab_url": "newtab.html"
},
"startup_pages": ["http://www.startuppage.com"]
},
"chrome_ui_overrides": {
"bookmarks_ui": {
"remove_button": true,
"remove_bookmark_shortcut": true,
"remove_bookmarks_submenu": true
}
},
"chrome_url_overrides": {
"newtab": "newtab.html"
},
"commands": {
"takeScreenshot": {
"suggested_key": {
"default": "Ctrl+Shift+Y",
"mac": "Command+Shift+Y"
},
"description": "Take a screenshot"
}
},
"content_scripts": [
{
"matches": ["http://www.example.com/*"],
"css": ["mystyles.css"],
"js": ["content_script.js"]
}
],
"content_security_policy": "script-src 'self' https://example.com; object-src 'self'",
"converted_from_user_script": false,
"current_locale": "",
"declarative_net_request": {
"rule_resources": [
{
"id": "ruleset_1",
"enabled": true,
"path": "rules.json"
}
]
},
"devtools_page": "devtools.html",
"event_rules": [
{
"event": "runtime.onStartup",
"actions": [
{
"type": "declarativeContent.ShowPageAction"
}
]
}
],
"externally_connectable": {
"matches": ["*://*.example.com/*"]
},
"file_browser_handlers": [
{
"id": "upload",
"default_icon": "icon16.png",
"file_filters": [
"filesystem:*.txt"
]
}
],
"file_system_provider_capabilities": {
"configurable": true,
"multiple_mounts": true,
"source": "network"
},
"homepage_url": "http://www.homepage.com",
"host_permissions": [
"*://*.example.com/*"
],
"import": [
{
"id": "abcdefghijklmnoabcdefhijklmnoabc",
"minimum_version": "1.0"
}
],
"incognito": "spanning or split",
"input_components": [
{
"name": "IME Component",
"type": "ime",
"id": "com.example.ime",
"description": "A tool to input language.",
"language": "en",
"layouts": ["layout1"]
}
],
"key": "publicKey",
"minimum_chrome_version": "88",
"nacl_modules": [
{
"path": "module.nmf",
"mime_type": "application/x-pnacl"
}
],
"oauth2": {
"client_id": "clientid.apps.googleusercontent.com",
"scopes": [
"https://www.googleapis.com/auth/userinfo.email"
]
},
"offline_enabled": true,
"omnibox": {
"keyword": "keyword"
},
"optional_permissions": ["tabs"],
"options_page": "options.html",
"options_ui": {
"chrome_style": true,
"page": "options.html"
},
"permissions": ["storage"],
"platforms": [
{
"nacl_arch": "x86-32",
"sub_package_path": "_platform_specific/x86-32/"
}
],
"replacement_web_app": {},
"requirements": {
"3D": {
"features": ["webgl"]
}
},
"sandbox": [
{
"pages": ["sandbox.html"],
"content_security_policy": "sandbox allow-scripts allow-same-origin"
}
],
"short_name": "Short Name",
"storage": {
"managed_schema": "schema.json"
},
"tts_engine": {
"voices": [
{
"voice_name": "Voice",
"lang": "en-US",
"gender": "male",
"event_types": ["start", "end", "error"]
}
]
},
"update_url": "http://www.update_url.com",
"version_name": "1.0 beta",
"web_accessible_resources": [
{
"resources": [
"images/*.png"
],
"matches": [
"https://*.example.com/*"
]
}
]
}
上述各个字段的含义如下:
manifest_version
: 清单文件的版本,必须字段,当前应为3。name
: 扩展的名称,必须字段。version
: 扩展的版本号,必须字段。default_locale
: 如果您的扩展支持多种语言,则需要此字段。description
: 对扩展的简单描述。icons
: 一个对象,为扩展提供不同尺寸的图标。action
: 用来定义浏览器操作栏(浏览器旁边的扩展图标)的行为,例如弹出页面等。author
: 扩展的作者名字。automation
: 指出扩展是否可以自动化Chrome浏览器的某些操作。background
: 定义后台持久性脚本或持久性页面。chrome_settings_overrides
: 覆盖Chrome的某些设置,例如主页、搜索提供程序或启动页。chrome_ui_overrides
: 覆盖Chrome用户界面的某个部分,比如书签界面。chrome_url_overrides
: 覆盖特定的内置页面,比如新标签页。commands
: 定义扩展的键盘快捷键。content_scripts
: 向特定网页注入脚本的配置。content_security_policy
: 定义内容安全策略。converted_from_user_script
: 表示扩展是否是从用户脚本转换而来。current_locale
: 插件当前的本地化语言。declarative_net_request
: 声明性网络请求配置。devtools_page
: 为Chrome开发者工具定义一个自定义页面。event_rules
: 定义扩展中的事件规则,如果符合某些条件将会触发。externally_connectable
: 允许哪些网页与扩展通信。file_browser_handlers
: 定义扩展如何处理文件浏览器中的文件。file_system_provider_capabilities
: 定义扩展提供的文件系统的能力。homepage_url
: 扩展的主页地址。host_permissions
: 扩展可以访问的网站。import
: 允许在扩展之间共享代码。incognito
: 定义扩展在隐身模式下的行为。input_components
: 定义输入组件,主要用于输入法扩展。key
: 用于更新扩展时验证的公钥。minimum_chrome_version
: 扩展需要的最小Chrome版本。nacl_modules
: Native Client模块配置。oauth2
: OAuth2的配置,如客户端ID和权限范围。offline_enabled
: 表示扩展是否可以离线使用。omnibox
: 定义扩展如何与地址栏交互。optional_permissions
: 用户安装扩展后可以选择性给予扩展的额外权限。options_page
: 扩展的选项页面。options_ui
: 配置扩展的选项UI。permissions
: 扩展所需的权限。platforms
: 针对不同的硬件体系结构提供特定信息。replacement_web_app
: 如果扩展是为了替代一个现有的Web应用程序。requirements
: 扩展所需要的Chrome的某些特殊功能。sandbox
: 设置一个或多个网页为沙盒模式,以限制权限。short_name
: 扩展的简称。storage
: 关于扩展存储的信息。tts_engine
: 文字到语音转换引擎配置。update_url
: 扩展更新的JSON文件地址。version_name
: 一个更具可读性的版本名字。web_accessible_resources
: 列出可以被网页访问的扩展资源。
这些字段和选项构成了扩展程序的核心配置,开发者需要可以根据自己扩展的功能来选择需要用到的字段。
以上仅仅是Chrome插件的入门教程,下一节课,我将带领大家实操,敬请期待~