Skip to main content
Extension.js 支援純 CSS,以及 Sass 與 Less 等預處理器,無需任何設定。它會針對頁面情境(popup、options、side panel)與 content script 情境採用不同的路由方式。 頁面樣式以連結資產的方式出貨。Extension.js 會把 content script 的樣式注入到網頁的 document,讓它套用到目前作用中的分頁。

範本範例

content-sass

content-sass template screenshot 把 Sass 樣式注入網頁的 content script。
儲存庫:extension-js/examples/content-sass

content-custom-font

content-custom-font template screenshot 示範透過 CSS 載入自訂字型的 content script。
儲存庫:extension-js/examples/content-custom-font

CSS 能力

在哪裡參考 CSS

  • manifest.jsoncontent_scripts[].css
  • HTML 檔案(<link rel="stylesheet" href="...">
  • Script 中的 import(import "./styles.css",啟用時也包含 Sass/Less)

CSS 支援

Manifest 中的 CSS 進入點:

範例:manifest.json 中的 CSS

範例:在擴充功能頁面 script 中引用 CSS

依情境的輸出行為

Extension.js 會依照哪一個進入點 import 該 CSS 自動拆分情境。

開發行為

  • Content script 的 CSS import 會參與 content script 的 HMR/重新掛載流程。
  • Extension.js 會為純 CSS 的 content script 進入點加上開發輔助 script,讓更新可以傳播。
  • 頁面 CSS 會走標準的頁面 HMR 流程。
  • 結構性 manifest/content script 變更仍可能需要重新載入或重新啟動整個擴充功能。

模組與預處理器

  • CSS modules 在擴充功能頁面情境中運作得最好。
  • 當你安裝相關相依套件時,Extension.js 會啟用 Sass/Less 支援。
  • 當 Extension.js 偵測到專案中的 PostCSS 設定、或你明確設定時,會自動執行 PostCSS。

最佳實務

  • 刻意限制 content script 樣式範圍,降低與主機頁面的衝突。
  • 為擴充功能頁面 UI 優先採用元件本地的 module 樣式。
  • 明確保留預處理器與 PostCSS 設定,避免建置設定隨時間意外改變。
  • 在持續整合(CI)中驗證被 manifest 欄位參考的 CSS 路徑。

後續步驟