本页面为希望理解、使用和贡献 Svelte 代码库的开发者提供了指导。如果您正在寻找如何使用 Svelte 构建应用程序的文档,请参阅官方 Svelte 文档。
Svelte 是一个编译器,它接收您声明式的组件,并将它们转换为高效的 JavaScript,以精确地更新 DOM。Svelte 仓库被组织为一个包含多个包和站点的单仓。
来源: package.json README.md CONTRIBUTING.md
在开始之前,请确保您已安装
Svelte 使用 pnpm 作为其包管理器,如
"packageManager": "pnpm@10.4.0",
"engines": {
"pnpm": ">=9.0.0"
}
来源: package.json8-11
这将安装 monorepo 中所有包的所有依赖项。
运行测试需要此步骤。
来源: .github/workflows/ci.yml40 CONTRIBUTING.md99-101 package.json16-30
Svelte 仓库被组织为一个 monorepo,其结构如下
| 目录 | 描述 |
|---|---|
packages/ | 核心包,包括 Svelte 编译器 |
sites/ | 与 Svelte 相关的网站 |
benchmarking/ | 性能测试工具 |
.github/ | GitHub 配置文件和工作流 |
最重要的包是 packages/svelte,它包含了核心的 Svelte 编译器和运行时。
来源: package.json CONTRIBUTING.md
来源: packages/svelte/src/internal/flags/index.js packages/svelte/README.md
此命令将构建 packages/ 目录下的所有包。
当文件更改时重新构建包
来源: package.json16-18 CONTRIBUTING.md78-80
Svelte 拥有一个全面的测试套件。测试位于 /test 文件夹中,并按组件组织。
要运行所有测试
运行特定的测试套件
运行套件中的特定测试
对于与快照进行比较的测试套件
来源: CONTRIBUTING.md92-120 .github/workflows/ci.yml33-43 .github/PULL_REQUEST_TEMPLATE.md .github/workflows/release.yml
下面这张图概述了 Svelte 的典型贡献流程
来源: CONTRIBUTING.md64-166 .github/PULL_REQUEST_TEMPLATE.md CONTRIBUTING.md137-147
main 分支创建一个新分支pnpm test 运行测试并通过pnpm lint 运行 linter 并通过pnpm check 运行类型检查npx changeset 来创建一个 changesetfeat:、fix:、chore: 或 docs: 前缀来源: .github/PULL_REQUEST_TEMPLATE.md CONTRIBUTING.md137-147
下表列出了开发过程中最常用的命令
| 命令 | 描述 |
|---|---|
pnpm install | 安装所有依赖项 |
pnpm build | 构建所有包 |
pnpm test | 运行所有测试 |
pnpm lint | 运行 ESLint 和 Prettier |
pnpm format | 运行 Prettier 来格式化代码 |
pnpm check | 运行类型检查 |
pnpm bench | 运行基准测试 |
npx changeset | 创建用于版本升级的 changeset |
pnpm changeset:version | 根据 changesets 更新版本 |
pnpm changeset:publish | 将包发布到 npm |
来源: package.json16-30 CONTRIBUTING.md78-80
Svelte 拥有全面的 TypeScript 定义。这些是通过
生成的类型已提交到仓库中。
来源: CONTRIBUTING.md134-137 packages/svelte/scripts/generate-types.js
Svelte 确保其所有包都能被正确地 tree-shakeable。这可以通过
来源: packages/svelte/scripts/check-treeshakeability.js
Svelte 使用 GitHub Actions 进行持续集成。主工作流定义在 .github/workflows/ci.yml 中,包括
Pull Request 会自动进行测试,并可以使用 CI 发布的包进行预览。
来源: .github/workflows/ci.yml .github/workflows/pkg.pr.new.yml .github/workflows/pkg.pr.new-comment.yml
如果您对贡献 Svelte 有任何疑问,请随时在 Discord 上的 #contributing 频道提问。
有关代码库不同部分的更详细信息,请查看以下页面