gh、再輸入查詢字串,就會直接前往 GitHub 搜尋結果。過程中你會串接一份 manifest.json,並在背景 service worker 中處理輸入。同時也會熟悉每個專案都會遵循的開發循環(create → dev → build)。
你會做出什麼
計畫
讓 GitHub 搜尋速度像瀏覽器原生捷徑一樣快。擴充功能會保留關鍵字gh;當你輸入 gh 加上查詢字串後,會打開 GitHub 的搜尋結果。
步驟 1:建立擴充功能
使用 Extension.js 的create 指令來建立一個名為 github-search 的擴充功能。
預設範本是一個可直接運作的 sidebar 起始範本,因此建立出來的專案已經包含
src/manifest.json 與 src/background.js。接下來兩個步驟會取代這兩個檔案。
本教學中你寫的所有內容都放在 src/ 底下,因為只要 src/manifest.json 存在,
Extension.js 就會優先採用它。
正在使用 Yarn?
yarn dlx 指令需要 Yarn 2 或更新版本。Yarn 1 沒有
dlx,會以「Command not found」錯誤失敗。在 Yarn 1 上,請改用
npm 分頁(npx)。正在使用 Deno? Deno 會非常積極地快取 npm 套件,包括 執行
@latest
標籤,因此 npm:extension@latest 可能一直解析到較舊的快取版本。
如果建立專案或 dev 建置失敗,而該錯誤在較新版本中已經修好
(例如 manifest.json references files that were not emitted to disk),請固定版本或重新整理快取:deno install 之後,先確認解析出的版本(extension 應與最新發行版本相符),
再執行 deno task dev。create 會產生什麼
create 會建立一個完整的專案,並初始化一個 git 儲存庫。預設範本會產生這棵目錄樹:
tsconfig.json 與 extension-env.d.ts,提供型別化的擴充功能 API。
有兩個檔案定住整個版面:
package.json標記專案根目錄。特殊資料夾(pages/、scripts/、public/)與dist/輸出都從那個目錄解析,絕不從src/。manifest.json標記擴充功能原始碼。它可以放在根目錄或src/。兩者都存在時,src/manifest.json獲勝。
步驟 2:建立 manifest 檔案
每個擴充功能都從 manifest 檔案開始。它定義中繼資料、權限與執行階段檔案。根據上述計畫,設定gh 捷徑並加入處理使用者事件的 service worker。
打開建立出來的 src/manifest.json,把內容換成:
omnibox.keyword:當你輸入gh時,瀏覽器會觸發事件。background.service_worker:監聽你觸發的事件。
步驟 3:建立背景 service worker
在瀏覽器擴充功能中,背景 service worker(一個獨立於任何可見頁面執行的腳本)負責處理瀏覽器事件。 在這個範例中,加入一段腳本來監聽 Omnibox 輸入,並把查詢字串導向 GitHub 搜尋。 建立src/service_worker.js,並刪除範本附帶的 src/background.js,這樣就不會有其他檔案占用 background 進入點:
步驟 4:載入你的擴充功能
進入專案並安裝相依套件。create 只會建立專案,不會替你安裝,而 dev
script 執行的是本地的 extension 執行檔:
package.json 檔案現在看起來像這樣,其中 extension 固定在你建立專案時使用的版本:
github-search,並在終端機印出就緒訊息。Chrome 的網址列現在已認得 gh 為關鍵字。
輸入 gh 接著按一下空白鍵,輸入 extension.js,按下 Enter。會開啟新分頁前往 https://github.com/search?q=extension.js&type=issues。
你現在有一個可以搜尋 GitHub 的可運作擴充功能了。
步驟 5:讓它變得更好
透過 Omnibox 輸入監聽器,在網址列直接顯示建議,藉此改善搜尋體驗。 更新service_worker.js,在輸入時抓取 GitHub 建議並顯示出來。
service_worker.js
後續步驟
- 用範本再建立一個擴充功能。
- 用 Playwright E2E 加入自動化檢查。
- 隨著擴充功能成長,瀏覽疑難排解、安全檢查清單與效能手冊。

