manifest.json 出發,為 Chrome、Edge、Firefox 與 Safari 建置並執行瀏覽器擴充功能。要建立一個擴充功能,請在終端機執行這些指令:
各個框架
有兩項結構性的差異,比任何單一功能列都更值得關注:
- manifest 放在哪裡。 Extension.js 讀取你的
manifest.json,並編譯它所宣告的所有內容。WXT 與 Plasmo 則是從檔案慣例與設定產生 manifest。CRXJS 雖然會讀取 manifest,但會透過 Vite 的 plugin API 解析,這也是為什麼打包工具升級可能讓它中斷(參見 Vite 8 的 fileName 錯誤)。 - 由誰掌控打包工具。 包裝通用打包工具的框架,就會繼承該打包工具的破壞性變更。Extension.js 把打包工具視為內部細節:你永遠不會去設定它,升級的問題由框架負責,而不是你。
詳細比較與遷移指南
- Extension.js vs WXT:最相近的比較,按維度逐項分析。
- Extension.js vs Plasmo:manifest 模型、開發循環、打包,以及附日期的維護狀態。
- 從 CRXJS 遷移:一般專案約十分鐘完成的逐步流程。
- 修正:Content script fileName 為 undefined:CRXJS + Vite 8 的建置錯誤與解法。
- 從 Plasmo 遷移:慣例對應到 manifest、環境變數與 CSUI。
- 遷移 webpack 或 Vite 擴充功能:把進入點交給 manifest.json、遷移 loader 與外掛,以及真實遷移中最耗時的坑。
不需投入即可試用
只要一行指令,就能執行任何擴充功能範本,或 GitHub 上任何擴充功能的儲存庫:chrome.* 呼叫與樣式都能從任何這些框架延續過來。遷移指南 涵蓋需要調整的串接細節。
