跳至主要内容

运行任务

Monorepos 可以拥有数百甚至数千个项目,因此能够对所有(或某些)项目运行 npm 脚本是 Lerna 等工具的关键特性。

定义

  • 命令 - 开发人员在终端中输入的任何内容(例如,lerna run build --scope=header --concurrency=5)。
  • 目标 - npm 脚本的名称(例如,build
  • 任务 - npm 脚本的一次调用(例如,header:build)。

示例仓库

示例基于此仓库,因此请随时克隆它并继续操作。

运行所有内容

每个项目都定义了 testbuild 脚本。

运行

npx lerna run build

这将按正确的顺序构建项目:footerheader,然后是 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