几个框架
有两点结构性的差异比任何特性表格都更重要:
- manifest 在哪里。 Extension.js 读取你的
manifest.json,并编译它声明的所有内容。WXT 与 Plasmo 通过文件约定和配置来生成 manifest。CRXJS 也读取 manifest,但通过 Vite 的插件 API 解析,这就是为什么打包器升级可能让它失效(参见 Vite 8 fileName 错误)。 - 谁拥有打包器。 一个封装了通用打包器的框架,会继承那个打包器的破坏性变更。Extension.js 把打包器当作内部细节:你永远不需要配置它,升级是框架的事,而不是你的事。
详细对比与迁移
- Extension.js vs WXT:最接近的对比,逐项展开。
- 从 CRXJS 迁移:分步指南,典型项目大约十分钟。
- 修复:Content script fileName is undefined:CRXJS + Vite 8 的构建错误,附变通方案。
- 从 Plasmo 迁移:约定到 manifest 的映射、环境变量与 CSUI。
不必承诺,先试一试
用一条命令运行任意扩展模板,或运行 GitHub 上任意扩展仓库:chrome.* 调用与样式都可以直接沿用;迁移指南会覆盖需要调整的接线部分。
