跳转到主要内容
通过在 Extension.js 可以校验、重写并稳定输出的 manifest 字段中声明图标,保持扩展品牌与 action UI 的一致性。 Extension.js 会处理 manifest.json 中的图标路径,解析 public/相对路径,输出图标资源,并在开发期监视图标文件。

模板示例

action

action template screenshot 一个 action 扩展,在 manifest.json 中声明了工具栏图标。
npx extension@latest create my-extension --template=action
仓库:extension-js/examples/action

图标能力

能力你会得到什么
支持 manifest 图标字段为受支持的扩展表面校验并编译图标
路径解析一致地处理相对路径与 public-root 图标路径
开发期监视在本地开发时重新编译图标变更
浏览器安全的输出在扩展产物中输出图标资源,并保持稳定的引用

受支持的图标字段

Manifest 字段期望的文件类型
action.default_icon.png、.jpg、.svg
browser_action.default_icon.png、.jpg、.svg
icons.png、.jpg、.svg
page_action.default_icon.png、.jpg、.svg
sidebar_action.default_icon.png、.jpg、.svg(*)
browser_action.theme_icons.png、.jpg、.svg
某些浏览器目前对 sidebar_action.default_icon 中的 .svg 仅提供部分支持。 在该上下文中使用 SVG 之前,请确认浏览器兼容性。

manifest.json 中的图标声明示例

{
  "manifest_version": 3,
  "name": "My Extension",
  "version": "1.0.0",
  "icons": {
    "16": "icons/icon-16.png",
    "48": "icons/icon-48.png",
    "128": "icons/icon-128.png"
  },
  "action": {
    "default_icon": "icons/action-icon.png"
  }
}

输出路径

典型的图标输出:
icons/<filename>
browser_action/<theme-icon-filename>   # for theme_icons

路径行为

  • Extension.js 会从 manifest 所在目录解析相对图标路径。
  • / 开头的路径和 public/... 会按扩展 public-root 语义解析。
  • Extension.js 可以监视 public 文件夹中的资源,而不必通过图标特性本身重新输出它们。

开发期行为

  • 修改已存在的图标文件会触发重新编译。
  • 修改 manifest 中图标入口的引用可能需要重启开发服务器。
  • 缺失必需的图标文件会产生构建错误(某些可选的图标组只会产生警告)。

最佳实践

  • 显式声明 manifest 图标字段,而不是依赖偶发的资源导入。
  • 提供多种图标尺寸(163248128),让 UI 在各浏览器表面更清晰。
  • 保持图标文件名稳定,减少开发期对 manifest 的扰动。
  • 有意地使用 public-root 路径,并测试由此产生的 manifest 输出路径。

下一步