Appearance
Rush 详解
简介
Rush 是由 Microsoft 开发的企业级 monorepo 管理工具,专为大型项目和团队设计。它提供快速的依赖安装、高效的构建系统和强大的发布管理功能,适用于需要处理大量包和复杂依赖关系的大型组织。
安装
全局安装 Rush
bash
npm install -g @microsoft/rush
初始化 Rush 工作区
bash
rush init
项目结构
my-rush-repo/
├── rush.json
├── common/
│ ├── config/
│ │ ├── rush/
│ │ │ ├── repo-state.json
│ │ │ ├── experiments.json
│ │ │ └── ...
│ ├── scripts/
│ └── temp/
├── apps/
├── libraries/
├── tools/
└── ...
核心配置
rush.json
Rush 工作区的主要配置文件:
json
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json",
"rushVersion": "5.70.0",
"pnpmVersion": "6.7.1",
"projects": [
{
"packageName": "my-app",
"projectFolder": "apps/my-app",
"shouldPublish": true,
"versionPolicyName": "library-policy"
},
{
"packageName": "my-library",
"projectFolder": "libraries/my-library",
"shouldPublish": true
}
],
"repository": {
"url": "https://github.com/microsoft/rush-example",
"defaultBranch": "main"
}
}
核心功能
1. 依赖管理
Rush 支持多种包管理器:
- PNPM(推荐)
- NPM
- Yarn
2. 并行构建
- 智能任务调度
- 依赖关系自动分析
- 最大化并行度
3. 变更日志管理
- 自动生成 CHANGELOG.md
- 与 SemVer 兼容的版本控制
- 支持预发布版本
基本命令
1. 安装依赖
bash
rush install
2. 更新依赖
bash
rush update
3. 构建所有项目
bash
rush build
4. 运行脚本
bash
rushx <script-name>
5. 添加包
bash
rush add --package <package-name>
6. 重新安装
bash
rush reinstall
高级功能
1. 变更检测
bash
rush change
生成变更日志,记录自上次发布以来的更改。
2. 发布管理
bash
rush publish --publish
自动发布包到 npm 注册表。
3. 并行执行
bash
rush build --parallelism 4
控制并行执行的任务数量。
4. 部分安装
bash
rush install --no-link
rush link
分离安装和链接步骤。
配置文件
1. common/config/rush/pnpm-lock.yaml
PNPM 依赖锁定文件。
2. common/config/rush/artifactory.json
Artifactory 配置文件(如果使用私有仓库)。
3. common/config/rush/browser-approved-packages.json
批准用于浏览器的包列表。
4. common/config/rush/generator-blacklist.json
生成器黑名单。
工作区协议
Rush 支持工作区协议,允许包之间相互引用:
json
{
"name": "my-app",
"dependencies": {
"my-library": "workspace:*"
}
}
最佳实践
1. 项目组织
- 按功能或业务领域组织包
- 使用一致的命名约定
- 保持包职责单一
2. 版本管理
- 使用 rush change 命令记录变更
- 定期发布新版本
- 使用版本策略管理相关包
3. CI/CD 集成
- 使用 Rush 的并行构建功能优化 CI 时间
- 实施智能缓存策略
- 利用 Rush 的部分构建功能
企业级特性
1. 访问控制
- 支持私有包管理
- 与企业身份验证系统集成
- 详细的权限管理
2. 审计与合规
- 包依赖审计
- 许可证合规检查
- 安全漏洞扫描
3. 监控与分析
- 构建性能分析
- 依赖关系可视化
- 使用统计报告
优缺点
优点
- 专为企业级项目设计
- 优秀的性能表现
- 强大的依赖管理
- 详细的文档和企业支持
- 成熟的变更日志管理
缺点
- 配置相对复杂
- 学习曲线较陡峭
- 主要面向大型项目
- 对小型团队可能过于重量级
与其他工具对比
Rush vs Lerna
- Rush 更适合企业级应用
- 提供更完整的发布管理
- 有更好的性能优化
Rush vs Nx
- Nx 提供更多代码生成功能
- Rush 更专注于包管理和发布
- Rush 有更强的企业级特性
Rush vs Yarn/PNPM Workspaces
- Rush 提供更高级的构建和发布功能
- Workspaces 主要关注依赖管理
- Rush 有更完整的 monorepo 解决方案