本文档为希望为 Zod(一个 TypeScript 优先的模式声明和验证库)做出贡献的开发者提供了全面的指南。它涵盖了开发过程、环境设置、测试程序和贡献工作流程。
本指南专门侧重于为 Zod 代码库贡献的技术方面。它旨在帮助贡献者了解如何设置开发环境、熟悉代码库结构、编写和运行测试以及提交高质量的拉取请求。
在开始贡献工作之前
git clone git@github.com:{your_username}/zod.gitgit checkout -b your-feature-name这有助于确保您的贡献符合项目目标,并避免重复工作。
您可以通过以下两种方法之一设置开发环境
git clone git@github.com:{your_username}/zod.git
cd zod
yarn install
适用于预装依赖项的隔离环境
Dev Containers: Clone Repository in Named Container VolumeDev Container 方法提供了一个与官方开发设置一致的环境。
来源:CONTRIBUTING.md31-53 .devcontainer/devcontainer.json1-22
核心架构围绕着 ZodType 抽象类,所有模式类型都继承自它。z 命名空间提供了创建模式实例的工厂函数。
来源:package.json9-11 package.json63-66 package.json94-97
Zod 提供了几个有用的开发命令
| 命令 | 描述 |
|---|---|
yarn build | 删除 lib 并将 src 重新编译到 lib |
yarn test | 运行所有 Jest 测试并生成覆盖率徽章 |
yarn test enum | 运行特定测试文件(例如 enum.test.ts) |
yarn play | 执行 playground.ts 进行实验(带自动重载) |
yarn check | 运行 linting 和 prettier 检查 |
yarn fix | 修复 linting 和格式问题 |
yarn build:deno | 构建 Deno 兼容版本 |
来源:CONTRIBUTING.md54-71 package.json86-114
当创建拉取请求时,GitHub Actions 会自动在 Node.js 和 Deno 环境上运行测试,并执行 linting 检查以确保代码质量。
来源:CONTRIBUTING.md16-30 .github/workflows/test.yml1-71
Zod 使用 Jest 进行测试。测试文件按模式类型组织在 src/__tests__/ 目录中。
在 src/__tests__/ 目录中创建或修改测试文件。遵循现有测试的模式。
在提交拉取请求之前,运行 yarn test 以确保所有测试通过,包括现有功能和您的新增功能。
来源:CONTRIBUTING.md73-77 package.json100-107
在实现新功能或修改现有功能时,请务必更新 README.md 文件中的文档。清晰的文档对于用户理解如何使用您的贡献至关重要。
Zod 支持 Node.js 和 Deno 环境。构建过程会为每个平台生成兼容的输出。
贡献时,请确保您的更改与两种环境都兼容。CI 流水线会自动测试这两个平台。
来源:package.json50-58 .github/workflows/test.yml12-55
Zod 有两种自动化发布工作流程
来源:.github/workflows/release.yml1-124 .github/workflows/release-canary.yml1-50
通过向 Zod 贡献,您同意根据 MIT 许可证许可您的贡献。