Skip to Content
文档utoo工作区

工作区

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. 没有内部依赖的包先运行
  2. 同一层的工作区并发运行,输出按工作区分组显示
  3. 被依赖的包完成后,依赖它的包再运行

示例:

▶ 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

共享版本与覆盖

两种项目级机制与工作区配合使用:

  • Catalog — 自己的工作区主动引用的共享版本,写法如 "react": "catalog:"
  • Overrides — 强制覆盖每次解析(包括传递依赖)的版本,也支持按工作区粒度。

交互模式

不带参数运行 ut run 进入交互式选择工作区和脚本:

Terminal
ut run # → 选择工作区: packages/ui # → 选择脚本: build
Last updated on