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="...">
  • 脚本导入(import "./styles.css",启用时也包括 Sass/Less)

CSS 支持

Manifest CSS 入口:

示例:manifest.json 中的 CSS

示例:扩展页面脚本中的 CSS

按上下文的输出行为

Extension.js 会根据哪个入口导入了 CSS 自动拆分上下文。

开发期行为

  • Content script 的 CSS 导入会参与 content script 的 HMR/重新挂载流程。
  • Extension.js 会为只有 CSS 的 content script 入口添加一个开发期辅助脚本,使更新得以传播。
  • 页面 CSS 遵循常规的页面 HMR 管线行为。
  • 结构性的 manifest/content script 变更仍可能需要扩展完整重载或重启。

模块化与预处理器

  • CSS 模块在扩展页面上下文中表现最好。
  • 当你安装相关依赖时,Extension.js 会启用 Sass/Less 支持。
  • 当 Extension.js 检测到项目中存在 PostCSS 配置,或者你显式配置时,会自动运行 PostCSS。

最佳实践

  • 把 content script 样式有意识地限定作用范围,减少与宿主页面的冲突。
  • 对扩展页面 UI,优先使用组件级的模块样式。
  • 显式地维护预处理器和 PostCSS 配置,避免随时间发生非预期的构建行为变化。
  • 在持续集成(CI)中校验 manifest 字段所引用的 CSS 路径。

下一步