本文档为希望为 Vite 项目做出贡献的开发者提供了全面的指南。它涵盖了开发环境设置、构建系统、测试基础设施和贡献工作流程。有关在您自己的项目中使用 Vite 的信息,请参阅 Vite 简介。有关 Vite 开发服务器的具体详细信息,请参阅 开发服务器。
Vite 使用 monorepo 结构,并使用 pnpm workspaces 进行依赖管理。该仓库需要特定的工具,并在开发中遵循特定的约定。
来源: CONTRIBUTING.md9-22 packages/vite/rolldown.config.ts16-181 packages/vite/rolldown.dts.config.ts36-53
开发环境设置需要特定版本的 Node.js 和 pnpm,确切的 pnpm 版本在根目录的 package.json 文件中的 packageManager 字段中指定。
| 命令 | 目的 | 描述 |
|---|---|---|
pnpm i | 安装依赖项 | 必须在仓库根目录运行 |
pnpm run build | 构建所有包 | 运行测试前必需 |
pnpm run dev | 监视模式开发 | 更改时自动重新构建(在 packages/vite 中) |
pnpm run docs | 文档开发 | 本地提供 VitePress 文档 |
pnpm test | 运行所有测试 | 集成和单元测试 |
pnpm run test-serve | 开发服务器测试 | 仅在 serve 模式下测试 |
pnpm run test-build | 生产构建测试 | 仅在 build 模式下测试 |
来源: CONTRIBUTING.md13-22 CONTRIBUTING.md37-42 CONTRIBUTING.md154-160
Vite 的构建系统使用 Rolldown 进行打包,并包含用于处理不同输出目标和环境的复杂配置。
来源: packages/vite/rolldown.config.ts16-181 packages/vite/rolldown.dts.config.ts117-168
Vite 遵循特定的依赖管理策略,以保持包的轻量级并确保正常运行。
devDependencies 并使用 Rolldown 进行预打包devDependencies,类型内联在 packages/vite/src/typesdependencies (例如,esbuild)dependencies (例如,rollup)bundleSizeLimit() 插件强制对模块运行器包实施大小限制,以保持轻量分发。
来源: CONTRIBUTING.md50-78 packages/vite/rolldown.config.ts165-174 packages/vite/rolldown.config.ts386-414
Vite 使用全面的测试设置,结合 Vitest 和 Playwright 来进行不同环境的单元测试和集成测试。
来源: CONTRIBUTING.md144-169 CONTRIBUTING.md172-183
集成测试在开发服务器模式和生产构建模式下运行。每个 playground 可以使用遵循 vite.config-{folderName}.js 模式的不同配置文件来定义变体。
测试环境使用修改过的 Vite 配置,该配置会跳过转译以提高测试性能,但这可能会产生与生产构建不同的结果。
来源: CONTRIBUTING.md148-149 CONTRIBUTING.md184
| 方法 | 用例 | 设置 |
|---|---|---|
| VS Code 调试器 | 交互式调试 | 添加 debugger 语句,使用“JavaScript 调试终端” |
| 调试日志 | 跟踪执行 | 使用 vite --debug [scope] 或 vite --debug * |
| Playwright 调试 | 浏览器测试调试 | 使用 pnpm run debug-serve [test] |
可以通过运行以下命令找到调试范围: grep -r "createDebugger('vite:" packages/vite/src/
所有提交信息必须遵循 conventional commit 格式并匹配此正则表达式
/^(revert: )?(feat|fix|docs|style|refactor|perf|test|build|ci|chore)(\(.+\))?!?: .{1,50}/
示例
feat(dev): add 'comments' optionfix(dev): fix dev errorperf(build)!: remove 'foo' option来源: .github/commit-convention.md7-21 CONTRIBUTING.md251
在添加新的配置选项之前,请考虑
该项目不鼓励进行大规模的风格重构,除非它们能客观地提高性能或代码质量。
来源: CONTRIBUTING.md80-88 CONTRIBUTING.md239-244
发布流程分为两个阶段:本地“Release”生成和 GitHub Actions“Publish”执行。
本地发布生成:
origin 远程指向 https://github.com/vitejs/vitegit pull 和 pnpm ipnpm buildpnpm release 并按照提示操作GitHub Actions 发布: