forked from AxTps/Starlight_Lancher
94 lines
3.5 KiB
Markdown
94 lines
3.5 KiB
Markdown
# 贡献指南 (Contributing)
|
||
|
||
感谢你对 Starlight Launcher 及其相关内容感兴趣!在提交代码前,请先阅读以下指南。
|
||
|
||
我们希望所有参与者都能在友善、包容的环境中协作。请先阅读[行为准则 (CODE_OF_CONDUCT.md)](CODE_OF_CONDUCT.md),了解社区期望和问题报告方式。
|
||
|
||
## 本地开发
|
||
|
||
### 环境要求
|
||
|
||
- **Node.js**:以 [`.nvmrc`](.nvmrc) 为准
|
||
- **pnpm**:以根目录 [`package.json`](package.json) 的 `packageManager` 为准
|
||
- **Rust**:以 [`rust-toolchain.toml`](rust-toolchain.toml) 为准
|
||
- [Tauri v2 系统依赖](https://v2.tauri.app/start/prerequisites/)
|
||
|
||
### 启动开发环境
|
||
|
||
1. 初始化 Git 子模块(cubiomes 是构建期的编译依赖,缺失会导致 Rust 编译失败),启用 Corepack 并安装依赖:
|
||
```powershell
|
||
git submodule update --init --recursive
|
||
corepack enable
|
||
pnpm install --frozen-lockfile
|
||
```
|
||
2. 启动开发服务器:
|
||
```powershell
|
||
pnpm app:dev
|
||
```
|
||
|
||
### 常用检查命令
|
||
|
||
在提交代码前,建议运行以下命令确保代码符合规范:
|
||
|
||
```powershell
|
||
# 品牌名和文本合规检查
|
||
pnpm axolotl:brand-guard
|
||
# 国际化词条检查
|
||
pnpm axolotl:i18n-check
|
||
# 前端格式化及 lint
|
||
pnpm prepr:frontend:app
|
||
# Rust 格式化检查
|
||
cargo fmt --all --check
|
||
# Rust 基础检查
|
||
cargo check --package theseus_gui --features updater
|
||
```
|
||
|
||
### 构建缓存与磁盘空间
|
||
|
||
Rust 编译产物位于 `target` 目录,首次完整构建可能占用数 GB 空间。Turbo 仅缓存前端输出,不会缓存 `target/**`。桌面应用的 Tauri 构建任务已明确关闭 Turbo 缓存。
|
||
|
||
如需释放本地开发缓存,可以删除以下目录:
|
||
|
||
```powershell
|
||
Remove-Item -Recurse -Force .turbo\cache
|
||
Remove-Item -Recurse -Force target\debug
|
||
```
|
||
|
||
此操作不会删除 `target\installer-test` 中单独生成的安装包。下次启动开发模式时需要重新编译 Rust 依赖。
|
||
|
||
## 仓库范围
|
||
|
||
Starlight 的产品改动主要位于:
|
||
|
||
- `apps/app-frontend`
|
||
- `apps/app`
|
||
- `packages/app-lib`
|
||
- 上述包所需的共享 UI 与资源包
|
||
|
||
本仓库**不包含** Modrinth 网站、Labrinth API 或其运营服务源码。桌面端保留对 Modrinth 公共 API 的客户端兼容;如果需要参考上游实现,请仅手动挑选与 Starlight 产品相关的改动,避免直接合并无关代码。
|
||
|
||
## 发布新版本
|
||
|
||
发布流程由 [`.github/workflows/axolotl-release.yml`](.github/workflows/axolotl-release.yml) 自动完成。版本号以 Git 标签为准,必须符合[语义化版本格式](https://semver.org/lang/zh-CN/)。
|
||
|
||
打标签并推送到远端即可触发发布工作流:
|
||
|
||
```powershell
|
||
git tag -a v1.2.3 -m "Starlight Launcher 1.2.3"
|
||
git push origin v1.2.3
|
||
```
|
||
|
||
预发布版本请使用带后缀的标签(如 `v1.2.3-beta.1`)。
|
||
|
||
**自动发布工作流执行步骤**:
|
||
1. 将标签版本写入桌面应用构建配置。
|
||
2. 在 GitHub 托管的 Windows、macOS 和 Linux runner 上并行构建安装包。
|
||
3. 使用仓库 Secrets 中的 Tauri 私钥生成签名更新包。
|
||
4. 生成并校验包含全部桌面平台的 `latest.json`。
|
||
5. 校验成功后将草稿 Release 转为正式发布。
|
||
6. GitHub Release 发布完成后,将安装包、更新清单和 Release 信息镜像到 CNB。
|
||
|
||
源码分支和标签也由 GitHub Actions 在 push 和删除事件后直接同步到 CNB。CNB 仓库不运行定时同步或标签流水线,避免在 GitHub 构建尚未完成时占用 CNB 构建时长。
|
||
|
||
> 注意:自动更新公钥已固化在客户端中,私钥只保存在 GitHub Actions Secrets 中,切勿提交到仓库。
|