ITADN
Jonghakseo/chrome-extension-boilerplate-react-vite
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
Logo

GitHub action badge GitHub action badge

此模板 具有 Legacy 版本

[!NOTE] 本项目收录于 Awesome Vite

[!TIP] 在所有页面之间共享存储状态

https://github.com/user-attachments/assets/3b8e189f-6443-490e-a455-4f9570267f8c

目录

简介

此模板帮助你使用 React 和 Typescript 创建 Chrome/Firefox 扩展。它通过使用 Vite 和 Turborepo 来提升构建速度和开发体验。

特性

安装

  1. Clone this repository.( git clone https://github.com/Jonghakseo/chrome-extension-boilerplate-react-vite )
  2. Ensure your node version is >= than in .nvmrc file, recommend to use nvm
  3. Edit /packages/i18n/locales/{your locale(s)}/messages.json
  4. In the objects extensionDescription and extensionName, change the message fields (leave description alone)
  5. Install pnpm globally: npm install -g pnpm
  6. Run pnpm install
  7. Check if you have that configuration in your IDE/Editor:
    • VS Code:
      • Installed ESLint extension
      • Installed Prettier extension
      • Enabled Typescript Workbench version in settings:
        • CTRL + SHIFT + P -> Search: Typescript: Select Typescript version... -> Use Workbench version
        • Read more
      • Optional, for imports to work correctly in WSL, you might need to install the Remote - WSL extension and connect to WSL remotely from VS Code. See overview section in the extension page for more information.
    • WebStorm:
      • Configured ESLint
      • Configured Prettier
      • Optional, but useful File | Settings | Tools | Actions on Save
        -> Optimize imports and Reformat code
  8. Run pnpm update-version <version> for change the version to the desired version of your extension.

[!IMPORTANT] 在 Windows 上,请确保已启用 WSL 并在 WSL 中安装了 Linux 发行版(例如 Ubuntu)。

安装指南

然后,根据目标浏览器:

适用于 Chrome:

  1. Run:
    • Dev: pnpm dev (on Windows, you should run as administrator; see issue#456)
    • Prod: pnpm build
  2. Open in browser - chrome://extensions
  3. Check - Developer mode
  4. Click - Load unpacked in the upper left corner
  5. Select the dist directory from the boilerplate project

适用于 Firefox:

  1. Run:
    • Dev: pnpm dev:firefox
    • Prod: pnpm build:firefox
  2. Open in browser - about:debugging#/runtime/this-firefox
  3. Click - Load Temporary Add-on... in the upper right corner
  4. Select the ./dist/manifest.json file from the boilerplate project

[!NOTE] 在 Firefox 中,你以临时模式加载附加组件。这意味着每次关闭浏览器后它们都会消失。你必须在每次启动浏览器时加载该附加组件。

安装 turborepo 的依赖项:

对于 root:

  1. 运行 pnpm i <package> -w

对于模块:

  1. 运行 pnpm i <package> -F <module name>

package - 要安装的包名称,例如 nodemon
module-name - 您可以在每个 package.json 中通过键 name 找到它,例如 @extension/content-script, 您可以仅使用 content-script 而不带 @extension/ 前缀

如何禁用我未使用的模块?

在此阅读

环境变量

阅读:Env 文档

样板结构

Chrome 扩展

该扩展位于 chrome-extension 目录中,并包含以下文件:

[!IMPORTANT] 为了方便开发,该模板被配置为“读取并更改你在所有网站上的所有数据”。 在生产环境中,最佳实践是将权限限制为仅严格必要的网站。请参阅 声明权限 并相应地编辑 manifest.js

页面

被转译以成为扩展一部分的代码位于 pages 目录中。

一些共享包:

  • dev-utils - Chrome 扩展开发工具(manifest-parser、logger)
  • env - 导出包含 .env 中所有环境变量及动态声明变量的对象
  • hmr - Vite 的自定义 HMR 插件,用于重载/刷新的注入脚本,HMR 开发服务器
  • i18n - 自定义国际化包;提供具有类型安全和其他验证的 i18n 函数
  • shared - 整个项目共享的代码(类型、常量、自定义 hooks、组件等)
  • storage - 便于与 storage 集成的辅助工具,例如本地/会话存储
  • tailwind-config - 整个项目共享的 Tailwind 配置
  • tsconfig - 整个项目共享的 tsconfig
  • ui - 将您的 Tailwind 配置与全局配置合并的函数;您可以在此处保存组件
  • vite-config - 整个项目共享的 Vite 配置

其他有用的包:

  • zipper - 运行 pnpm zipdist 文件夹打包到新建的 dist-zip 内的 extension-YYYYMMDD-HHmmss.zip
  • module-manager - 运行 pnpm module-manager 以启用/禁用模块
  • e2e - 运行 pnpm e2e 在不同浏览器上对您的压缩扩展进行端到端测试

故障排除

热模块重载似乎已冻结

如果保存源文件未触发扩展 HMR 代码以重新加载浏览器页面,请尝试以下操作:

  1. 使用 Ctrl+C 停止开发服务器并重新启动它(pnpm run dev
  2. 如果出现 grpc 错误终止 turbo 进程 并再次运行 pnpm dev

导入未正确解析

如果你正在使用 WSL 且导入无法正确解析,请确保你已通过 Remote - WSL 扩展将 VS Code 远程连接到 WSL。

社区

要与其他社区成员交流,你可以加入 Discord 服务器。 你可以在该服务器上提问,也可以帮助他人。

此外,请提出新功能建议或分享你在开发 Chrome 扩展过程中遇到的任何挑战!

调试

如果你在调试其中一个,你可以使用 Brie 让你捕获截图、错误和网络活动,从而让我们更容易提供帮助。

参考

Star History

Star History Chart

贡献者

本 Boilerplate 得以实现,感谢所有贡献者。

All Contributors

特别感谢

JetBrains Logo (Main) logo.Jackson Hong

Jonghakseo 制作