用途:指导现代浏览器扩展(Chrome/Firefox/Safari)开发,基于 Manifest V3,强调框架无关方案。
主要方案:默认推荐 WXT,框架无关(React、Vue、Svelte、SolidJS、Vanilla),Vite 驱动,支持 HMR、内容脚本自动重载、TypeScript 类型生成、自动发布商店,默认 Manifest V3。替代方案:Plasmo 偏 React,类 Next.js 文件路由与代码分割;CRXJS 为极简 Vite 插件,HMR 强但需手动配置。
必要用法:npm create wxt@latest 创建项目;npm run dev(Chrome)、dev:firefox、dev:edge、dev:safari(实验性)。Plasmo 用 npm create plasmo、npm run dev。CRXJS 用 npm install @crxjs/vite-plugin -D 加入现有 Vite 项目。跨浏览器兼容安装 webextension-polyfill;构建用 npm run build、build:firefox、build:safari,打包用 npm run zip,发布可用 wxt publish --chrome --firefox(需 API 密钥)。
能力与场景:含 WXT 目录结构(entrypoints、background、content、popup、options)、弹窗与后台、内容脚本与页面间 postMessage 通信、chrome.storage.sync 存储与变更监听、CSP 配置、消息校验(避免 innerHTML,用 textContent)、Vitest 与 @testing-library 测试、GitHub Actions CI、性能建议(懒加载、去抖)。
限制:Manifest V2 已弃用,需迁移;Service Worker 可随时终止且无 DOM 权限,须用 chrome.storage 持久化并在顶层注册监听;内容脚本处于隔离环境,须经 postMessage 与页面通信;禁止 eval/new Function 与内联脚本,所有代码需打包;服务端执行脚本能力受限。Safari 支持标注为实验性。价格、授权与具体商店政策暂未提供。