关于 wxt-browser-extensions
面向 WXT 扩展开发者的浏览器扩展优化指南,包含按影响程度排序的实践规则,适用于 WXT v0.20+。
主要功能
- 01涵盖 8 类开发主题
- 02按影响程度排列规则
- 03指导服务工作线程与内容脚本
- 04涵盖消息、存储和清单配置
- 05包含 TypeScript 实践建议
适用场景
- 01编写 WXT 浏览器扩展
- 02配置服务工作线程和内容脚本
- 03设计扩展上下文间的消息传递
- 04审查权限、存储与构建体积
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill wxt-browser-extensions安装后在 Claude Code 中输入/wxt-browser-extensions确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdbundle-analyze-size.mdbundle-externalize-wasm.mdbundle-minify-content-scripts.mdbundle-split-entrypoints.mdbundle-tree-shake-icons.mdinject-all-frames.mdinject-choose-correct-world.mdinject-dynamic-registration.mdinject-run-at-timing.mdinject-spa-navigation.mdinject-use-ctx-invalidated.mdinject-use-main-function.mdmanifest-content-security-policy.mdmanifest-cross-browser-compatibility.mdmanifest-minimal-permissions.mdmanifest-use-optional-permissions.mdmanifest-web-accessible-resources.mdmsg-avoid-circular-messages.mdmsg-handle-no-receiver.mdmsg-return-true-for-async.mdmsg-type-safe-messaging.mdmsg-use-ports-for-streams.mdmsg-use-tabs-sendmessage.mdstore-batch-operations.mdstore-choose-storage-area.mdstore-handle-quota-errors.md详细介绍
社区 WXT 浏览器扩展最佳实践
WXT 浏览器扩展开发的全面性能优化指南。包含 8 个类别中的 49 条规则,并按影响优先级排序,为自动重构和代码生成提供指导。已针对 WXT v0.20+ 更新。
适用场景
在以下情况下参考这些指南:
- 编写新的 WXT 浏览器扩展代码
- 实现后台 Service Worker 脚本
- 向网页注入内容脚本
- 设置扩展上下文之间的消息传递
- 配置清单权限和资源
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | Service Worker 生命周期 | CRITICAL | svc- |
| 2 | 内容脚本注入 | CRITICAL | inject- |
| 3 | 消息传递架构 | HIGH | msg- |
| 4 | 存储模式 | HIGH | store- |
| 5 | 打包优化 | MEDIUM-HIGH | bundle- |
| 6 | 清单配置 | MEDIUM | manifest- |
| 7 | UI 性能 | MEDIUM | ui- |
| 8 | TypeScript 模式 | LOW-MEDIUM | ts- |
快速参考
1. Service Worker 生命周期(CRITICAL)
svc-register-listeners-synchronously- 同步注册监听器,以防遗漏事件svc-avoid-global-state- 使用存储代替内存状态svc-keep-alive-patterns- 在长时间运行的操作期间保持 Service Worker 存活svc-handle-install-update- 处理安装和更新生命周期事件svc-offscreen-documents- 使用离屏文档执行 DOM 操作svc-declarative-net-request- 使用声明式规则拦截网络请求
2. 内容脚本注入(CRITICAL)
inject-use-main-function- 将运行时代码放在 main() 函数中inject-choose-correct-world- 适当选择 ISOLATED 或 MAIN 环境inject-run-at-timing- 配置合适的 runAt 时机inject-use-ctx-invalidated- 处理更新时的上下文失效inject-dynamic-registration- 使用运行时注册实现条件注入inject-all-frames- 配置 allFrames 以处理 iframeinject-spa-navigation- 使用 wxt:locationchange 处理 SPA 导航
3. 消息传递架构(HIGH)
msg-type-safe-messaging- 使用 @webext-core/messaging 实现类型安全的协议msg-return-true-for-async- 异步消息处理程序返回 true(原始 API)msg-use-tabs-sendmessage- 使用 tabs.sendMessage 向内容脚本发送消息msg-use-ports-for-streams- 使用端口进行流式通信msg-handle-no-receiver- 处理缺少消息接收方的情况msg-avoid-circular-messages- 防止循环消息
4. 存储模式(HIGH)
store-use-define-item- 使用 storage.defineItem 实现类型安全的访问store-choose-storage-area- 选择合适的存储区域store-batch-operations- 将相关数据组合到单个 defineItem 中store-watch-for-changes- 使用 watch() 实现响应式更新store-handle-quota-errors- 处理存储配额错误store-versioned-migrations- 使用版本控制进行架构迁移
5. Bundle 优化(MEDIUM-HIGH)
bundle-split-entrypoints- 按入口点拆分代码bundle-analyze-size- 分析并监控 bundle 大小bundle-tree-shake-icons- 直接导入图标库bundle-externalize-wasm- 动态加载 WASMbundle-minify-content-scripts- 尽量减小内容脚本的体积
6. 清单配置(MEDIUM)
manifest-minimal-permissions- 仅请求最少权限manifest-use-optional-permissions- 渐进式使用可选权限manifest-web-accessible-resources- 限定 Web 可访问资源的范围manifest-content-security-policy- 正确配置 CSPmanifest-cross-browser-compatibility- 支持多种浏览器
7. UI 性能(MEDIUM)
ui-use-shadow-dom- 使用 Shadow DOM 注入 UIui-defer-rendering- 按需延迟渲染弹出窗口ui-cleanup-on-unmount- 卸载时清理 UIui-sidepanel-persistence- 保留侧边栏状态ui-position-fixed-iframe- 使用 iframe 实现复杂 UIui-avoid-layout-thrashing- 批量读取和写入 DOM
8. TypeScript 模式(LOW-MEDIUM)
ts-use-imports-module- 使用 #imports 虚拟模块和自动导入ts-use-browser-not-chrome- 优先使用 browser 命名空间,而非 chromets-type-entrypoint-options- 显式声明入口点选项的类型ts-augment-browser-types- 为缺失的 API 扩充类型ts-strict-null-checks- 启用严格空值检查ts-import-meta-env- 使用 import.meta 获取构建信息ts-avoid-any- 避免在处理函数中使用 any 类型ts-path-aliases- 使用路径别名导入
使用方法
阅读各个参考文件,了解详细说明和代码示例:
参考文件
| 文件 | 描述 |
|---|---|
| references/_sections.md | 分类定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
评论
支持 Markdown