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