菜单

贡献 Vite

相关源文件

本文档为希望为 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 进行打包,并包含用于处理不同输出目标和环境的复杂配置。

Rolldown 配置结构

来源: packages/vite/rolldown.config.ts16-181 packages/vite/rolldown.dts.config.ts117-168

依赖管理策略

Vite 遵循特定的依赖管理策略,以保持包的轻量级并确保正常运行。

  • 运行时依赖: 添加到 devDependencies 并使用 Rolldown 进行预打包
  • 仅类型依赖: 添加到 devDependencies,类型内联在 packages/vite/src/types
  • 二进制依赖: 添加到 dependencies (例如,esbuild)
  • 公共 API 类型: 添加到 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/

来源: CONTRIBUTING.md89-122

拉取请求和贡献指南

提交信息约定

所有提交信息必须遵循 conventional commit 格式并匹配此正则表达式

/^(revert: )?(feat|fix|docs|style|refactor|perf|test|build|ci|chore)(\(.+\))?!?: .{1,50}/

示例

  • feat(dev): add 'comments' option
  • fix(dev): fix dev error
  • perf(build)!: remove 'foo' option

来源: .github/commit-convention.md7-21 CONTRIBUTING.md251

拉取请求工作流程

来源: CONTRIBUTING.md224-252

代码质量指南

在添加新的配置选项之前,请考虑

  • 问题是否值得解决?
  • 是否可以用更智能的默认值来解决?
  • 是否可以使用现有选项进行规避?
  • 是否可以使用插件解决?

该项目不鼓励进行大规模的风格重构,除非它们能客观地提高性能或代码质量。

来源: CONTRIBUTING.md80-88 CONTRIBUTING.md239-244

发布流程

发布流程分为两个阶段:本地“Release”生成和 GitHub Actions“Publish”执行。

发布工作流

  1. 本地发布生成:

    • 确保 origin 远程指向 https://github.com/vitejs/vite
    • 在主分支上运行 git pullpnpm i
    • 执行 pnpm build
    • 运行 pnpm release 并按照提示操作
    • 生成 changelog,git tag,并推送到 origin
  2. GitHub Actions 发布:

    • 访问提供的 GitHub Actions 链接
    • 批准“Release”环境的部署
    • 包将自动发布到 npm

来源: CONTRIBUTING.md337-356