manifest.json
メモ: この記事では、ウェブ拡張機能の manifest.json について説明します。PWA の manifest.json に関する情報をお探しの場合は、ウェブアプリマニフェストの記事を調べてみてください。
manifest.json ファイルは、WebExtension API を使う拡張機能に必ず含めなければならない唯一のファイルです。
manifest.json を使うことで、拡張機能の名前やバージョンといった基本的なメタデータを指定したり、拡張機能の機能的な側面として、例えばバックグラウンドスクリプトやコンテンツスクリプト、ブラウザーアクションを指定することもできます。
これは JSON形式のファイルですが、1つ例外があります: "//"-形式のコメントが許可されています。
manifest.json キーの一覧
以下は manifest.json のキーです。特に断りがない限り、これらのキーは Manifest V2 以上で利用できます。
- action (Manifest V3 以上)
- author
- background
- browser_action (Manifest V2 のみ)
- browser_specific_settings
- chrome_settings_overrides
- chrome_url_overrides
- commands
- content_scripts
- content_security_policy
- declarative_net_request
- default_locale
- description
- developer
- devtools_page
- dictionaries
- externally_connectable (Firefox では未対応)
- homepage_url
- host_permissions (Manifest V3 以上)
- icons
- incognito
- manifest_version
- name
- offline_enabled (Firefox では未対応)
- omnibox
- optional_host_permissions (Manifest V3 以上)
- optional_permissions
- options_page
- options_ui
- page_action (Chrome では Manifest V2 のみ)
- permissions
- protocol_handlers (Firefox のみ)
- short_name
- sidebar_action
- storage (Firefox では未対応)
- theme
- theme_experiment (Firefox のみ) (実験的)
- user_scripts (Manifest V2 のみ)
- version
- version_name
- web_accessible_resources
manifest.json のキーの注意点
- 必須のキーは、
"manifest_version","version","name"だけです。 "default_locale"は_localesディレクトリーが存在する場合は必要ですが、そうでない場合は不要です。"browser_specific_settings"は Google Chrome で対応していません。
manifest.json の情報を実行時に参照する
拡張機能の manifest には、拡張機能の JavaScript から runtime.getManifest() 関数を使ってアクセスできます:
js
browser.runtime.getManifest().version;
例
下記のブロックには一般的なマニフェストキーの基本文法を示します。
メモ: これは、そのままコピー&ペーストして使用できる例として用意されたものではありません。必要なキーの選択は、開発している拡張機能によって異なります。
完全な例は拡張機能の例を見てください。
json
{
"browser_specific_settings": {
"gecko": {
"id": "@addon-example",
"strict_min_version": "42.0"
}
},
"background": {
"scripts": ["jquery.js", "my-background.js"]
},
"browser_action": {
"default_icon": {
"19": "button/geo-19.png",
"38": "button/geo-38.png"
},
"default_title": "Whereami?",
"default_popup": "popup/geo.html"
},
"commands": {
"toggle-feature": {
"suggested_key": {
"default": "Ctrl+Shift+Y",
"linux": "Ctrl+Shift+U"
},
"description": "Send a 'toggle-feature' event"
}
},
"content_security_policy": "script-src 'self' https://example.com; object-src 'self'",
"content_scripts": [
{
"exclude_matches": ["*://developer.mozilla.org/*"],
"matches": ["*://*.mozilla.org/*"],
"js": ["borderify.js"]
}
],
"default_locale": "en",
"description": "…",
"icons": {
"48": "icon.png",
"96": "icon@2x.png"
},
"manifest_version": 2,
"name": "…",
"page_action": {
"default_icon": {
"19": "button/geo-19.png",
"38": "button/geo-38.png"
},
"default_title": "Whereami?",
"default_popup": "popup/geo.html"
},
"permissions": ["webNavigation"],
"version": "0.1",
"user_scripts": {
"api_script": "apiscript.js"
},
"web_accessible_resources": ["images/my-image.png"]
}
ブラウザーの互換性
関連情報
permissions JavaScript API