我们的浏览器扩展从 Plasmo 迁移到 WXT 框架的旅程 - ChatGPT 作者

主要观点:成功将浏览器扩展(ChatGPT Writer)从 Plasmo 迁移到 WXT 框架,解决了开发中的问题并实现更平滑发展。
关键信息:

  • 起初用 Plasmo 开发,因其能处理代码捆绑等任务加快开发,但后来扩展功能增加,发展受限,如更改需 7 秒以上重建,代码更新不及时等,且 Parcel 捆绑器过时导致与 Markdown 等包不兼容,作者不再维护框架,希望渺茫。
  • 决定用 Vite 写浏览器扩展特定配置,后接触 WXT 框架,因其能处理所有相关事宜节省时间,且基于 Vite 有优势,迁移后扩展构建大小从 700KB 减小到 400KB。
    迁移过程:
    1. 在 WXT 中组织入口点:需在项目根目录创建entrypoints目录,将内容脚本等文件放入其中。
    1. 添加 post-install 命令:在package.json中添加postinstall脚本"postinstall": "wxt prepare",自动生成.wxt目录。
    1. 配置调整:避免 TypeScript 配置冲突,通过扩展tsconfig文件和调整编译器选项解决,同时管理路径别名。
    1. 环境变量问题:适应 Vite 处理环境变量的方式,前缀为VITE_并使用import.meta.env访问。
    1. 迁移清单配置到wxt.config.ts:在该文件中设置扩展的清单配置,从package.json迁移过来。
    1. 调整图标管理:手动创建不同分辨率的图标文件放入public目录,并在wxt.config.ts中定义。
    1. 处理内联资产导入:去掉data-base64前缀,直接导入资产。
    1. 解决开发中的端口冲突:可给 WXT 指定不同端口或先启动 Next.js 服务器。
    1. 处理开发中的双重渲染:注意React.StrictMode导致的组件双渲染,优化副作用逻辑。
    1. 管理 Shadow DOM 实现:可使用 WXT 内置方法或框架独立方式实现。
    1. 避免跨上下文代码共享:用消息传递 API 通信,使用共享目录组织代码,避免共享上下文特定代码。
      结论:迁移解决了开发问题,希望分享经验能帮助他人更顺利迁移。同时招聘 IST 时区的 React 开发者。
阅读 20
0 条评论