工程化工具链
Quantum Design 使用现代化的工程工具链,提供高效的开发体验和严格的代码质量保障。
工具链概览
构建工具
- Vite: 现代前端构建工具,提供极速的开发体验
- Rollup: JavaScript 模块打包器,用于库的构建
- Unbuild: 通用包构建工具,简化库的构建流程
- Turbo: Monorepo 构建加速工具,提供缓存和并行构建能力
代码质量工具
- ESLint: JavaScript/TypeScript 代码质量检查工具
- Prettier: 代码格式化工具
- TypeScript: 类型检查和编译
- Vitest: 单元测试框架
- Oxlint: 高性能 JavaScript/TypeScript Linter
版本控制与发布
- Changesets: 多包仓库变更日志与版本管理
- Husky: Git hooks 工具
- Lint-staged: 针对暂存文件运行 lint
- Commitlint: Commit 消息规范检查
构建工具详解
Vite
Vite 是一个现代前端构建工具,提供极速的开发体验。
版本: ^7.1.1
配置文件: vite.config.ts
主要功能:
- 极速的热模块替换 (HMR)
- 按需编译,无需打包
- 内置 TypeScript 支持
- CSS 预处理器支持
- 插件系统
使用示例:
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import { viteVueConfig } from '@quantum-design-configs/vite';
export default defineConfig({
...viteVueConfig,
plugins: [vue()],
});Rollup
Rollup 是一个 JavaScript 模块打包器,专注于库的构建。
版本: ^4.46.2
配置文件: rollup.config.mjs
主要功能:
- Tree-shaking
- ES 模块输出
- 代码分割
- 插件系统
使用示例:
import { rollupLibConfig } from '@quantum-design-configs/rollup';
export default rollupLibConfig;Turbo
Turbo 是一个高性能的构建系统,专为 Monorepo 设计。
版本: ^2.5.5
配置文件: turbo.json
主要功能:
- 增量构建
- 远程缓存
- 任务编排
- 并行执行
使用示例:
{
"$schema": "https://turbo.build/schema.json",
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**"]
},
"dev": {
"cache": false,
"persistent": true
}
}
}代码质量工具
ESLint
ESLint 是一个可插拔的 JavaScript/TypeScript 代码质量检查工具。
版本: ^9.22.0
配置文件: .eslintrc.js
主要规则集:
@typescript-eslint: TypeScript 规则eslint-plugin-vue: Vue 规则eslint-plugin-prettier: Prettier 集成
使用示例:
module.exports = {
extends: ['@quantum-design-configs/eslint/vue'],
};Prettier
Prettier 是一个固执己见的代码格式化工具。
版本: ^3.5.3
配置文件: .prettierrc.js
主要功能:
- 自动格式化代码
- 支持多种语言
- 与编辑器集成
使用示例:
module.exports = require('@quantum-design-configs/prettier');TypeScript
TypeScript 是 JavaScript 的超集,添加了类型系统。
版本: ^5.9.2
配置文件: tsconfig.json
主要功能:
- 静态类型检查
- 代码补全
- 重构工具
- 接口和类型定义
使用示例:
{
"extends": "@quantum-design-configs/tsconfig/base.json",
"compilerOptions": {
"outDir": "dist"
},
"include": ["src"]
}Vitest
Vitest 是一个 Vite 原生的单元测试框架。
版本: ^3.2.4
配置文件: vitest.config.ts
主要功能:
- 快速执行
- 与 Vite 共享配置
- 支持 TypeScript
- 兼容 Jest 的 API
使用示例:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
environment: 'jsdom',
coverage: {
provider: 'v8',
},
},
});版本控制与发布
Changesets
Changesets 是一个多包仓库变更日志与版本管理工具。
版本: ^2.29.5
配置文件: .changeset/config.json
主要功能:
- 版本管理
- 变更日志生成
- 发布工作流
使用示例:
# 创建变更集
pnpm changeset
# 更新版本
pnpm changeset version
# 发布
pnpm changeset publishHusky
Husky 是一个 Git hooks 工具。
版本: ^9.1.6
配置文件: .husky/
主要功能:
- 提交前检查
- 推送前检查
- 自定义 Git hooks
使用示例:
# .husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
pnpm lint-stagedCommitlint
Commitlint 是一个 Commit 消息规范检查工具。
配置文件: commitlint.config.mjs
主要功能:
- 检查 Commit 消息格式
- 强制执行 Commit 规范
- 自定义规则
使用示例:
import { commitlintConfig } from '@quantum-design-configs/commitlint';
export default commitlintConfig;工具链集成
开发流程
- 本地开发:
pnpm dev- 启动开发服务器 - 代码检查:
pnpm lint- 运行 ESLint 和 Prettier - 单元测试:
pnpm test- 运行 Vitest - 构建:
pnpm build- 使用 Turbo 构建所有包 - 发布准备:
pnpm changeset- 创建变更集 - 版本更新:
pnpm changeset version- 更新版本号 - 发布:
pnpm changeset publish- 发布到 npm
CI/CD 集成
项目使用 GitHub Actions 进行 CI/CD:
- 代码检查: 每次提交运行 ESLint 和 TypeScript 检查
- 单元测试: 每次提交运行单元测试
- 构建验证: 每次提交验证构建是否成功
- 发布: 合并到主分支时自动发布
最佳实践
代码质量
- 遵循 ESLint 规则: 确保代码通过 ESLint 检查
- 使用类型注解: 为函数和变量添加 TypeScript 类型
- 编写测试: 为关键功能编写单元测试
- 遵循 Commit 规范: 使用规范化的 Commit 消息
性能优化
- 利用 Turbo 缓存: 避免重复构建
- 优化依赖: 减少不必要的依赖
- 代码分割: 使用动态导入分割代码
- 懒加载: 对非关键资源使用懒加载
工作流优化
- 使用工作区命令: 使用
pnpm --filter针对特定包运行命令 - 并行开发: 利用 Turbo 的并行执行能力
- 增量构建: 只构建更改的包
- 自动化测试: 在提交前自动运行测试
