菜单

贡献

相关源文件

本文档为希望为 Zod(一个 TypeScript 优先的模式声明和验证库)做出贡献的开发者提供了全面的指南。它涵盖了开发过程、环境设置、测试程序和贡献工作流程。

目的与范围

本指南专门侧重于为 Zod 代码库贡献的技术方面。它旨在帮助贡献者了解如何设置开发环境、熟悉代码库结构、编写和运行测试以及提交高质量的拉取请求。

初始步骤

在开始贡献工作之前

  1. 创建一个问题,描述您希望构建的内容
  2. Fork 存储库
  3. 克隆您 Fork 的仓库:git clone git@github.com:{your_username}/zod.git
  4. 创建新分支:git checkout -b your-feature-name

这有助于确保您的贡献符合项目目标,并避免重复工作。

来源:CONTRIBUTING.md16-19

开发环境设置

您可以通过以下两种方法之一设置开发环境

标准设置

git clone git@github.com:{your_username}/zod.git
cd zod
yarn install

VSCode 开发容器

适用于预装依赖项的隔离环境

  1. 在 VSCode 中按 F1
  2. 选择 Dev Containers: Clone Repository in Named Container Volume
  3. 输入您 Fork 的 URL
  4. 创建一个名为 "zod" 的新卷

Dev 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 文件中的文档。清晰的文档对于用户理解如何使用您的贡献至关重要。

来源:CONTRIBUTING.md79-81

跨平台支持

Zod 支持 Node.js 和 Deno 环境。构建过程会为每个平台生成兼容的输出。

贡献时,请确保您的更改与两种环境都兼容。CI 流水线会自动测试这两个平台。

来源:package.json50-58 .github/workflows/test.yml12-55

发布流程

Zod 有两种自动化发布工作流程

  1. 标准发布:当 main 分支中的 package.json 版本更新时触发
  2. 金丝雀发布:当 src/ 文件更改被推送到 main 分支时自动发布

来源:.github/workflows/release.yml1-124 .github/workflows/release-canary.yml1-50

许可证

通过向 Zod 贡献,您同意根据 MIT 许可证许可您的贡献。

来源:CONTRIBUTING.md83-85 package.json76