本文档记录了 Svelte 仓库的持续集成、持续交付流水线和贡献流程。它涵盖了项目如何管理其构建、测试和发布过程,并为贡献者提供了在提交更改时应遵循的工作流指南。
Svelte 项目遵循结构化的贡献工作流,以维护代码质量并确保顺畅的审查过程。
来源: CONTRIBUTING.md1-147 .github/PULL_REQUEST_TEMPLATE.md1-12 .github/workflows/ci.yml1-80
在贡献 Svelte 之前,您需要设置您的开发环境。
项目使用 pnpm workspaces 来管理 monorepo 结构。
该存储库被组织为一个 monorepo,包含多个包和站点。
svelte-monorepo/
├── packages/
│ ├── svelte/ # Main Svelte package
│ └── ... # Other packages
├── sites/ # Documentation and demo sites
├── .github/ # GitHub configuration and workflows
└── ...
来源: package.json1-49 CONTRIBUTING.md74-79
Svelte 使用全面的测试套件来确保代码质量并防止回归。
| 命令 | 描述 |
|---|---|
pnpm test | 运行所有测试 |
pnpm test <suite-name> | 运行特定的测试套件 |
pnpm test <suite-name> -- -t <test-name> | 运行套件中的特定测试 |
pnpm lint | 运行 ESLint 和 Prettier 检查 |
pnpm format | 使用 Prettier 格式化代码 |
pnpm check | 类型检查代码库 |
pnpm bench | 运行基准测试 |
有些测试会与保存的快照进行比较。要更新这些快照,请
来源: CONTRIBUTING.md92-120 package.json16-29
Svelte 使用 GitHub Actions 进行持续集成和交付。
来源: .github/workflows/ci.yml1-80 .github/workflows/pkg.pr.new.yml1-43 .github/workflows/pkg.pr.new-comment.yml1-117
CI 工作流包含多个作业,这些作业在不同的操作系统和 Node.js 版本上运行。
每个作业都必须通过才能合并拉取请求。
来源: .github/workflows/ci.yml14-79
对于每个拉取请求,都会发布一个临时包,允许在合并之前在实际项目中进行测试。
工作流
示例注释
<!-- pkg.pr.new comment -->
[Playground](https://svelte.net.cn/playground?version=pr-123)
pnpm add https://pkg.pr.new/svelte@123
来源: .github/workflows/pkg.pr.new.yml1-43 .github/workflows/pkg.pr.new-comment.yml1-117
TypeScript 类型定义是 Svelte 的重要组成部分。该项目有一个专门的类型生成和验证流程。
类型定义使用 generate-types.js 脚本生成,该脚本
stripInternal 选项移除内部类型在 CI 期间,工作流会验证已提交的类型定义是否与当前源代码生成的类型匹配。
来源: packages/svelte/scripts/generate-types.js1-77 .github/workflows/ci.yml62-64
Svelte 使用 changesets 来管理版本和变更日志的生成。
当进行会影响版本号的更改时
npx changesetChangesets 存储在 .changeset 目录中,并在发布过程中用于确定版本增量和生成变更日志条目。
来源: CONTRIBUTING.md146 .changeset/config.json1-11
发布过程通过 GitHub Actions 自动化。
发布工作流
main 分支时运行来源: .github/workflows/release.yml1-49
该项目通过 changesets 系统使用语义化版本控制,该系统
来源: .changeset/config.json1-11 .github/workflows/release.yml40-48
提交拉取请求时,请遵循以下准则,以确保顺畅的审查流程:
feat:、fix:、chore: 或 docs: 之类的前缀。对于破坏性更改,请包含以下信息:
来源: .github/PULL_REQUEST_TEMPLATE.md1-12 CONTRIBUTING.md138-160
Svelte 拥有一个生态系统 CI 系统,用于测试与其他生态系统项目的集成。
维护者可以通过在拉取请求上评论 /ecosystem-ci run 来触发生态系统测试。这将与其他 Svelte 生态系统项目运行一套集成测试,以确保兼容性。
来源: .github/workflows/ecosystem-ci-trigger.yml1-95
问题经过分类和管理,以实现高效的分类和优先级排序。
存储库为以下内容提供了结构化模板:
带有 good first issue 标签的问题是新贡献者的理想选择。
来源:.github/ISSUE_TEMPLATE/bug_report.yml1-51 .github/ISSUE_TEMPLATE/feature_request.yml1-36 CONTRIBUTING.md22-29