本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
运行任务
Monorepo 可能包含数百甚至数千个项目,因此能够针对所有(或部分)项目运行 npm 脚本是 Lerna 这类工具的核心功能。
术语定义
-
命令(Command) - 开发者在终端输入的任何指令(例如:
lerna run build --scope=header --concurrency=5)。 -
目标(Target) - npm 脚本的名称(例如:
build)。 -
任务(Task) - 对 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