scriptcat-mv3/CONTRIBUTING.md
王一之 8dd5bdaa56
Some checks failed
test / Run tests (push) Failing after 7s
build / Build (push) Failing after 16s
document
2025-02-05 15:22:17 +08:00

126 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ScriptCat 贡献指南
我们非常感谢你为 ScriptCat 做出贡献!本指南旨在帮助你以更规范的方式向 ScriptCat
提交贡献,因此请务必认真阅读。
## 提交 Issue
在提交 Issue 前,我们建议你先查看
[已有的 Issues](https://github.com/scriptscat/scriptcat/issues),以避免重复提交。
### 报告问题、故障与漏洞
ScriptCat 是一个不断发展的项目。如果你在使用过程中发现问题,并且确信这些问题是由
ScriptCat 引起的,欢迎提交 Issue。在提交时请附带详细的复现步骤和运行环境信息。
### 提出新功能
我们欢迎你在 Issue
中提出新的功能建议。为了让我们更好地理解你的需求,建议你尽可能详细地描述这个功能,并提供你认为可能的解决方案。
## Pull Request
ScriptCat 使用 [pnpm](https://pnpm.io/) 来管理项目依赖。如果你已经安装了
npm以下的命令可以帮助你快速配置开发环境
```bash
# 安装 node.js 依赖
pnpm install
```
我们推荐使用[代理](https://pnpm.io/npmrc#https-proxy)来解决 pnpm 的网络问题,而不是使用镜像。
```bash
# 设置代理(linux/mac)
export HTTPS_PROXY=http://127.0.0.1:1080
# 设置代理(windows)
set HTTPS_PROXY=http://127.0.0.1:1080
```
### Commit 规范
我们希望每一个 commit 都能清晰地描述其目的,每个 commit
应尽可能只包含一个修改。我们的 commit message 格式遵循
[gitmoji](https://gitmoji.dev/) 规范。例如:
```bash
git commit -m "✨ add login feature"
```
这个示例表示添加了新的功能:登录功能。
### 工作流概述
`main` 分支是 ScriptCat 的主分支。为了保持代码的完整性,请不要直接修改 `main`
分支。你应该创建一个新的分支,并在这个分支上进行修改,然后发起一个目标分支为
`main` 的 Pull Request。Pull Request
的标题请尽量使用中文,以便于自动生成更新日志。
如果你不是 ScriptCat 团队的成员,你可以先 fork 本仓库,然后向本仓库的 `main`
分支发起 Pull Request。在创建 commit 时,请按照上述 commit message
规范进行。我们将在 code review 完成后将你的贡献合并到主分支。
## 撰写文档
ScriptCat
的文档在另外的仓库中:[scriptcat.org](https://docs.scriptcat.org),使用
[docusaurus](https://docusaurus.io/)进行撰写,这有一些
[Markdown](https://docusaurus.io/zh-CN/docs/markdown-features)
特性可以帮助你。如果你需要在本地预览修改后的文档,可以使用以下命令安装文档依赖并启动
dev server
```bash
npm install
npm start
```
### 帮助我们翻译
[Crowdin](https://crowdin.com/project/scriptcat) 是一个在线的多语言翻译平台。如果您有兴趣帮助我们翻译 ScriptCat 的相关内容,您可以在 Crowdin 上找到 ScriptCat 项目,并开始进行翻译工作。
- `src/locales`为[扩展](https://github.com/scriptscat/scriptcat)翻译文件目录
- `public/locales`为[脚本站](https://github.com/scriptscat/scriptlist-frontend)的翻译文件目录
#### 扩展开启所见即所得模式
扩展开启所见即所得模式需要使用`npm run i18n`模式进行构建,然后通过控制台设置伪语言`localStorage['language']='ach-UG';`,然后刷新页面。
#### 脚本站开启所见即所得模式
脚本站访问:[https://scriptcat.org/ach-UG](https://scriptcat.org/ach-UG) 即可开启所见即所得模式
## 参与开发
ScriptCat 使用 ESLint 来规范代码风格,使用 Jest
来进行单元测试。你可以使用以下命令来运行:
```bash
npm test
npm run lint
```
ScriptCat 的页面开发使用了以下技术:
- [React](https://reactjs.org/)
- UI 框架 [arco](https://arco.design)
- CSS 框架 [unocss](https://unocss.dev/interactive/)
- RsPack 打包工具 [rspack](https://rspack.dev/)
如果你想在本地运行 ScriptCat可以使用以下命令
```bash
npm run dev
```
如果你想打包扩展,可以使用以下命令:
```bash
npm run pack
```
在打包前,请确保在`dist`目录下生成了`scriptcat.pem`文件。
## 注意问题
- `npm run dev`之后需要把`dist/ext`目录里面内容在浏览器扩展里面导入加载,然后开始改代码保存即可,浏览器是实时更新的,但是涉及到`manifest.json``service_worker``offscreen``sandbox`的改动需要重新导入加载。