Manifest V3 設定檔
manifest.json 是每個 Chrome Extension 唯一必要的檔案,用宣告式的 JSON 告訴 Chrome:這個擴充功能叫什麼名字、需要哪些權限、有哪些頁面與程式碼。現行規格是 Manifest V3,Chrome 已不再接受新上架的 Manifest V2 擴充功能,本頁只介紹 V3。
常用欄位速查
| 欄位 | 用途 | 是否必要 |
|---|---|---|
manifest_version |
固定填 3 |
必要 |
name |
擴充功能名稱,顯示在 Chrome Web Store 與擴充功能清單 | 必要 |
version |
版本號,格式如 1.0.0,每次上架更新都要遞增 |
必要 |
description |
簡短描述功能 | 建議 |
icons |
各尺寸圖示(16、48、128 px) | 建議 |
action |
工具列按鈕設定,含 default_popup、default_icon |
常用 |
background |
指定 Background Service Worker 的 service_worker 檔案 |
依需求 |
content_scripts |
宣告要注入哪些網頁、注入哪些 JS/CSS | 依需求 |
permissions |
使用 Chrome API 所需的權限,例如 storage、tabs |
依需求 |
host_permissions |
允許存取的網站網域,例如 https://*.example.com/* |
依需求 |
options_page / options_ui |
設定頁面 | 依需求 |
web_accessible_resources |
允許網頁直接載入的擴充功能內部檔案 | 依需求 |
範例:一個中型擴充功能的 manifest.json
manifest.json
{
"manifest_version": 3,
"name": "網頁筆記小幫手",
"version": "1.2.0",
"description": "在任何網頁上快速記筆記,並同步到雲端。",
"icons": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
},
"action": {
"default_popup": "popup.html",
"default_icon": "icons/icon48.png"
},
"background": {
"service_worker": "background.js"
},
"content_scripts": [
{
"matches": ["https://*/*"],
"js": ["content.js"],
"run_at": "document_idle"
}
],
"permissions": ["storage", "activeTab"],
"host_permissions": ["https://*.example.com/*"],
"options_page": "options.html"
}
這份設定檔宣告了工具列彈出視窗、一個常駐的 Background Service Worker、會注入所有網頁的 Content Script,以及讀寫本機資料與存取目前分頁所需的權限。每個元件的細節會在 核心架構 個別說明。
權限最小化原則
permissions 與 host_permissions 宣告的內容,會直接顯示在 Chrome Web Store 的安裝畫面上讓使用者確認,也是審核時的重點。只申請功能真正需要的權限:
- 只在使用者主動點擊工具列時才需要存取當前分頁,用
"activeTab"取代寬鬆的"tabs"或"<all_urls>"。 - 不確定會不會用到的權限,先不要加;日後要用再更新版本補上,審核與使用者信任度都會更好。
完整的權限設計原則見 權限與安全性。
下一步
理解設定檔的欄位後,前往 核心架構,看看 background、content_scripts、action、options_page 這些欄位背後對應的執行環境實際如何運作。