全ての拡張機能はマニフェストファイルと呼ばれる JSON フォーマットのファイルを manifest.json という名前で持つ必要がある。これには拡張機能についての重要な情報が記述される。
サポートしているマニフェストのフィールドは、次の通り。このうち、必須なものは name と version のみである。
{ // 必須 "name": "My Extension", "version": "versionString",
// 推奨 "description": "A plain text description", "icons": { ... }, "default_locale": "en",
// いずれか1つを選択(もしくは何も使わない) "browser_action": {...}, "page_action": {...}, "theme": {...},
// 必要に応じて設定 "background_page": "aFile.html", "chrome_url_overrides": {...}, "content_scripts": [...], "minimum_chrome_version": "x.y", "options_page": "aFile.html", "permissions": [...], "plugins": [...], "update_url": "http://path/to/updateInfo.xml" }
45文字以内の、プレーンテキストによる拡張機能の名前。この名前はインストールのダイアログ画面や拡張機能の管理画面、 で使われる。
拡張機能のバージョン。4つまでの、ドットで区切られた数値であらわす。各数値は 0 から 65535 まででなくてはならず、0以外の値はゼロで始まってはいけない。例えば 99999 や 032 は不正な値である。
有効なバージョン番号は、例えば次のようなものである。
自動更新システムは、インストールされているバージョンと最新版のバージョンを比較して、更新が必要かどうかを決める。最新版のバージョンがインストールされたものよりも新しければ、拡張機能は自動的に更新される。
バージョンの比較は、左端の数値から始められる。この数値が等しければ、ひとつずつ右の数値を比較していく。例えば 1.2.0 は 1.1.9.9999 よりも新しいと判定される。
省略されている数値はゼロと扱われる。そのため 1.1.9.9999 は 1.1 よりも新しいと判定される。
より詳細な情報は、自動更新参照。
拡張機能に関する説明を、132文字以内のプレーンテキスト(HTMLなどのフォーマットは使えない)で記述する。この説明書きは、ブラウザの拡張機能管理画面や で使われる。
ひとつ以上の、拡張機能をあらわすアイコン。少なくとも、48ピクセル四方と128ピクセル四方の2種類は用意するべきである。48×48のアイコンは拡張機能の管理ページ(chrome://extensions)で使われる。また 128×128 のものは、ユーザが拡張機能をインストールする際に使われる。
アイコンは一般的には、透過機能に最も優れるPNGフォーマットを用いることが望ましい。ではあるが、WebKitがサポートしているフォーマットである BMP、GIF、ICO、JPEG なども利用することは可能だ。以下、アイコンの指定方法の例を挙げる。
"icons": { "48": "icon48.png",
"128": "icon128.png" },
もし作成した拡張機能を に登録するのであれば、これらに加えて 32×32ピクセルのロゴと、1つ以上の拡張機能に関するスクリーンショットをアップロードする必要がある。ギャラリーに関するより詳細な情報は を参照。
拡張機能のデフォルト・ロケールとなる _locales 下のサブディレクトリ名を指定する。このフィールドは、拡張機能が _locales ディレクトリを持っているならば 必須 となる。そして逆に、 _locales ディレクトリが無いならば 指定してはいけない 。詳しくは国際化を参照。
ブラウザアクション参照。
ページアクション参照。
テーマ参照。
バックグラウンド・ページ参照。
オーバーライド参照。
コンテント・スクリプト参照。
拡張機能が必要とするGoogle Chromeの最小バージョン番号。必要であれば記述する。書式は version フィールドと同様。
オプションページ参照。
拡張機能が必要とするパーミッションを配列で指定する。パーミッションには “tab” や “bookmark” のように予約語になっているものもあれば、アクセスするホストを示すマッチパターンもある。これらのパーミッションは、インストール前にユーザに確認される。パーミッションは、もしその拡張機能が攻撃を行った際に、被害を制限する役割がある。
APIがパーミッションを必要とする場合、各ドキュメントにその方法が書かれている。例えば タブ であれば、タブを操作するためのパーミッション指定方法がそこに記述されている。
以下は、パーミッション部分の一例である。
"permissions": [
"tabs",
"bookmarks",
"http://www.blogger.com/",
"http://*.google.com/"
],
より詳細な情報は、生成元横断XMLHttpRequest、ウインドウ、タブ、お気に入りなどを参照。
NPAPIプラグイン参照。
自動更新参照。