# 贡献指南
[English](CONTRIBUTING.md) | [官话 - 简体中文](CONTRIBUTING-cmn_CN.md) | [官話 - 正體中文](CONTRIBUTING-cmn_TW.md) | [廣東話](CONTRIBUTING-jyut.md)
## 💻 设置开发环境
此项目是基于 [Vite](https://vitejs.dev/) 构建的,请确保本地安装了 [Node.js](https://nodejs.org/) 和 [pnpm](https://pnpm.io/),
同时建议你用 [Visual Studio Code](https://code.visualstudio.com/) 进行开发。
## 🔧 开发和构建项目
### 开发 (Chrome or Edge)
#### Chrome 或 Edge 的第一种方法
详细内容
1. 运行 pnpm 命令
```bash
# 安装依赖
pnpm install
# 创建一个用于存储登录状态的扩展程序文件夹
mkdir web-ext-profile
# 运行项目
pnpm dev
# 打完这条指令之后,会自动打开一个新的 Chrome 窗口并打开 BiliBili 网站
pnpm start:chromium
```
2. 每次修改扩展程序,它都会重新加载,您可以通过刷新网页来查看更改
#### Chrome 或 Edge 的另外一种方法
详细内容
1. 运行 pnpm 命令
```bash
# 安装依赖
pnpm install
# 运行项目
pnpm dev
```
2. 在地址栏输入 `chrome://extensions/` (Chrome), `edge://extensions/` (Edge) 并按回车
3. 打开 `开发者模式` 并点击 `加载已解压的拓展程序`
4. 在浏览器中加载生成的 `extension/` 文件夹
每次修改后,您需要单击 [Reload Extensions](https://chromewebstore.google.com/detail/extensions-reloader/fimgfedafeadlieiabdeeaodndnlbhid) 按钮并刷新页面以确保应用更改。
#### 构建 (Chrome or Edge)
要构建拓展程序,运行
```bash
pnpm build
```
然后打包到 `extension` 文件夹
### 开发 (Firefox)
#### Firefox 的第一种方法
详细内容
1. 运行 pnpm 命令
```bash
# 安装依赖
pnpm install
# 创建一个用于存储登录状态的扩展程序文件夹
mkdir web-ext-profile
# 运行项目
pnpm dev
# 打完这条指令之后,会自动打开一个新的 Firefox 窗口并打开 BiliBili 网站
pnpm start:firefox
```
2. 每次修改扩展程序,它都会重新加载,您可以通过刷新网页来查看更改
#### Firefox 的另外一种方法
详细内容
1. 运行 pnpm 命令
```bash
# 安装依赖
pnpm install
# 运行项目
pnpm dev
```
2. 在浏览器输入 `about:addons` 之后点击 `Extensions` 然后 `Debug Add-ons`
3. 在浏览器中加载生成的 `extension-firefox/` 文件夹
#### 构建 (Firefox)
要构建拓展程序,运行
```bash
pnpm build-firefox
```
然后打包到 `extension-firefox` 文件夹
## 🤝 贡献
### 关于分支
#### 常驻分支
- **Main**: 用此分支进行错误修复、新功能的开发、性能改进或对国际化(i18n)文件的修改。
#### 其他临时分支
- **feat/**: 此分支用于提交新的功能
- **doc/**: 此分支专门用于修复文档, 不涉及功能改动。
- **fix/**: 此分支专门用于修复 dev 分支中出现的错误。
### Commit 规范
你也可以参照 [Angular commit message guidelines](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines)
- `feat`:新功能
- `fix`:修复 Bug
- `docs`:文档更新
- `style`:不影响代码含义的更改(空格、格式、缺少分号等)
- `refactor`:重构代码
- `test`:添加或更新测试
- `chore`:构建过程或工具链的变更
- `perf`:性能改进
- `ci`:持续集成/交付的变更
也欢迎增加 scope 和 footer
例如:
`fix(dock): xxx`
`变更描述`
`相关 PR: url`
### I18n
- 在进行翻译时,如果你遇到一种你不熟悉的语言,可以使用另一种你已经翻译过的语言,并在 PR 中指出你无法翻译的语言。
- **请手动维护 i18n 国际化文件!!!** 不要使用 `i18n Ally` 或其他扩展来维护它们。我知道你可能会感到困惑或不喜欢这样做,但使用 `i18n Ally` 进行维护会不确定翻译放在哪里或删除代码注释。