工作区
utoo 支持 npm 工作区,用于 monorepo 管理。
配置
在根目录的 package.json 中定义工作区:
{
"name": "my-monorepo",
"workspaces": [
"packages/*",
"apps/*"
]
}目录结构
my-monorepo/
├── package.json # 根目录,包含工作区配置
├── packages/
│ ├── ui/
│ │ └── package.json
│ └── utils/
│ └── package.json
└── apps/
└── web/
└── package.json命令
指定工作区
使用 -w 或 --workspace 指定工作区:
Terminal
# 在指定工作区安装
ut install lodash -w packages/ui
# 在指定工作区运行脚本
ut run build -w apps/web
# 在指定工作区添加开发依赖
ut install -D typescript -w packages/utils多工作区选择
使用多个 -w 选择多个工作区,支持 glob 模式:
Terminal
# 选择多个工作区
ut run build -w packages/a -w packages/b
# 使用 glob 匹配
ut run build -w 'packages/*'所有工作区
使用 --workspaces 针对所有工作区:
Terminal
# 在所有工作区运行构建
ut run build --workspaces
# 在所有工作区安装
ut install --workspaces执行顺序
使用 --workspaces 或多个 -w 时,命令按拓扑顺序分层执行:
- 没有内部依赖的包先运行
- 同一层的工作区并发运行,输出按工作区分组显示
- 被依赖的包完成后,依赖它的包再运行
示例:
▶ 1/3
packages/utils ✓ (先运行,无依赖)
▶ 2/3
packages/ui ✓ (其次,依赖 utils)
▶ 3/3
apps/web ✓ (最后,依赖 ui)工作区间依赖
使用 workspace: 协议引用工作区包:
{
"name": "apps/web",
"dependencies": {
"@my-monorepo/ui": "workspace:*",
"@my-monorepo/utils": "workspace:^1.0.0"
}
}完整写法见 Package Specs。
共享版本与覆盖
两种项目级机制与工作区配合使用:
交互模式
不带参数运行 ut run 进入交互式选择工作区和脚本:
Terminal
ut run
# → 选择工作区: packages/ui
# → 选择脚本: buildLast updated on