运行任务
Monorepos 可以拥有数百甚至数千个项目,因此能够对所有(或某些)项目运行 npm 脚本是 Lerna 等工具的关键特性。
定义
- 命令 - 开发人员在终端中输入的任何内容(例如,
lerna run build --scope=header --concurrency=5
)。 - 目标 - npm 脚本的名称(例如,
build
) - 任务 - npm 脚本的一次调用(例如,
header:build
)。
示例仓库
示例基于此仓库,因此请随时克隆它并继续操作。
运行所有内容
每个项目都定义了 test
和 build
脚本。
运行
npx lerna run build
这将按正确的顺序构建项目:footer
和 header
,然后是 remixapp
。
终端输出
✔ header:build (501ms)
✔ footer:build (503ms)
✔ remixapp:build (670ms)
—————————————————————————————————————————————————————————————————————————————
Lerna (powered by Nx) Successfully ran target build for 3 projects (1s)
请注意,Lerna 不关心每个构建脚本的作用。名称 build
也不是特殊的:它只是 npm 脚本的名称。
并发运行多个任务
您可以传递一个逗号分隔的目标列表,您希望触发它们以并发运行。
npx lerna run test,build,lint
例如,如果您的任务之间存在依赖关系,例如 build
需要在特定包的 test
之前运行,则任务运行器将为您协调此操作,只要您已配置了适当的任务管道配置。
为单个包运行任务
在开发过程中,您很少运行所有构建或所有测试。相反,您通常只针对您正在更改的项目运行某些操作。例如,您可以像这样运行 header
测试
npx lerna run test --scope=header
运行受 PR 影响的任务
您还可以像这样为 PR 中受影响的所有项目运行命令
npx lerna run test --since=origin/main
了解更多信息,请点击此处。
控制任务的运行方式
要更详细地控制任务的执行顺序,请编辑任务管道配置。
自动加载 .env 文件
默认情况下,由 Nx 提供支持的现代任务运行器会自动为您加载 .env
文件。如果出于任何原因您想禁用此行为,可以将 --load-env-files
设置为 false。
有关默认情况下将加载哪些 .env
文件的更多详细信息,请参阅:https://nx.dev/recipes/environment-variables/define-environment-variables