本文档记录了 Tauri 项目的开发工作流程,包括贡献流程、CI/CD 流水线、测试策略和发布流程。它全面概述了 Tauri 生态系统内的开发是如何进行的。
有关构建和打包 Tauri 应用程序的信息,请参阅 Build and Bundling System。有关 API 文档,请参阅 JavaScript API。
Tauri 项目遵循结构化的贡献流程,以确保代码质量和一致性。
为 Tauri 做出贡献始于创建符合以下指南的拉取请求
fix(windows): fix race condition in event loop)对于非琐碎的更改,请考虑先提交一个草稿 PR 以获取反馈,然后再最终确定。
来源:.github/PULL_REQUEST_TEMPLATE.md1-21
Tauri 使用更改文件系统(由 Covector 驱动)来跟踪更改和自动化版本更新。当进行需要版本更新的更改时,请将更改文件添加到 .changes 目录。
更改文件控制版本如何更新。该系统识别以下更改类型
| 更改标签 | 描述 | 版本影响 |
|---|---|---|
feat | 新功能 | 次要版本升级 |
enhance | 增强功能 | 次要版本升级 |
bug | Bug 修复 | 补丁版本升级 |
perf | 性能改进 | 补丁版本升级 |
changes | 已更改内容 | 补丁版本升级 |
sec | 安全修复 | 补丁版本升级 |
deps | 依赖项 | 补丁版本升级 |
breaking | 破坏性变更 | 主要版本升级 |
Tauri 项目采用了一个完整的 CI/CD 流水线,该流水线使用 GitHub Actions 实现。
下图说明了 Tauri 项目中的主要 CI/CD 工作流程
来源:.github/workflows/covector-version-or-publish.yml5-147 .github/workflows/test-core.yml5-105 .github/workflows/lint-js.yml5-41 .github/workflows/fmt.yml5-52 .github/workflows/check-generated-files.yml5-83
Tauri 实现了跨不同平台的多个层级的测试,以确保稳定性
测试会在拉取请求和合并到 dev 分支时自动运行,针对各种平台和功能组合使用不同的矩阵配置。
来源:.github/workflows/test-core.yml30-104 .github/workflows/test-android.yml5-107 .github/workflows/test-cli-js.yml5-63
Tauri 的发布流程在很大程度上通过 Covector 和 GitHub Actions 实现自动化。
Covector 根据更改文件管理版本流程
来源:.github/workflows/covector-version-or-publish.yml57-147 .changes/config.json13-229
Tauri 拥有复杂的依赖图,它决定了软件包的发布顺序。下图说明了这些依赖关系
来源:.changes/config.json129-229
发布过程完全通过 GitHub Actions 实现自动化。工作流程如下
covector-version-or-publish.yml 工作流程会发布软件包对于 JavaScript CLI,还会执行额外的步骤来构建特定平台的二进制文件(用于 Windows、macOS、Linux 和各种架构)。
来源:.github/workflows/covector-version-or-publish.yml95-147 .github/workflows/publish-cli-js.yml5-400 .github/workflows/publish-cli-rs.yml5-96
Tauri 项目采用了多种自动化检查来维护代码质量
| 检查类型 | 工具 | 目的 |
|---|---|---|
| 格式化 | rustfmt, Prettier, taplo | 确保代码风格一致 |
| 代码 Linting | ESLint, Clippy | 捕获常见错误和反模式 |
| 类型检查 | TypeScript, Rust 编译器 | 确保类型安全 |
| 安全 | cargo audit, npm audit | 检查已知漏洞 |
| 依赖项 | cargo-udeps | 检测未使用的依赖项 |
来源:.github/workflows/fmt.yml5-52 .github/workflows/lint-js.yml5-41 .github/workflows/udeps.yml5-155 .github/workflows/audit.yml5-42
Tauri 包含一个基准测试系统,用于跟踪随时间变化的性能指标
来源:.github/workflows/bench.yml5-98
Tauri 开发需要在多个平台上进行测试。该项目使用 CI 在以下平台进行测试
CI 矩阵确保所有支持的平台和架构都经过测试。对于移动开发,专门的工作流程会测试 Android 和 iOS 特定的功能。
来源:.github/workflows/test-core.yml30-104 .github/workflows/test-android.yml5-107 .github/workflows/publish-cli-js.yml24-96
开始为 Tauri 贡献
pnpm i --frozen-lockfile 来安装依赖项cargo test 运行测试以确保您的设置正常工作有关贡献 Tauri 的更详细信息,请参阅 Contributing to Tauri。