跳到主要内容

工作空间监视

备注

工作空间监视从 Lerna 6.4.0 版本开始可用。

Lerna 可以监视包内的文件更改,并自动从仓库根目录执行命令。如果您需要在开发工作流程中更新文件时重新构建包或重新运行测试,这将非常有用。

这取代了手动为每个包单独设置监视的需要。

示例

监视所有包并回显包名和已更改的文件:

$ lerna watch -- echo \$LERNA_PACKAGE_NAME \$LERNA_FILE_CHANGES

监视所有包,并在包内文件更改时运行该包的 "build" 脚本:

$ lerna watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME

监视所有包,并对受更改影响的所有内容运行 "build" 脚本:

$ lerna watch -- lerna run build --since

监视单个包并在其内部文件更改时运行其 "build" 脚本:

$ lerna watch --scope="my-package-1" -- lerna run build --scope=\$LERNA_PACKAGE_NAME

监视单个包及其依赖项,并在它们中任何一个发生更改时运行 "build" 脚本:

$ lerna watch --scope="my-package-1" --include-dependencies -- lerna run build --scope=\$LERNA_PACKAGE_NAME

监视所有包,并为已更改的包及其所有依赖包运行 build 脚本:

$ lerna watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME --include-dependents

有关更高级的过滤,请参见过滤选项文档。有关更多可用选项,请参见 lerna watch 文档。

监视环境变量

Lerna 在运行内部命令时将设置环境变量 $LERNA_PACKAGE_NAME$LERNA_FILE_CHANGES。这些可用于自定义运行的命令。

  • $LERNA_PACKAGE_NAME 将被替换为已更改的包的名称。
  • $LERNA_FILE_CHANGES 将被替换为已更改的文件。如果在一个周期中检测到多个文件更改,则 $LERNA_FILE_CHANGES 将列出所有这些文件,用空格分隔。
备注

使用 $LERNA_PACKAGE_NAME$LERNA_FILE_CHANGES 时,您需要用反斜杠(\)转义 $。请参见上面的示例

使用包管理器运行

上面的示例展示了直接在终端中使用 lerna。但是,您也可以通过包管理器使用 lerna,而无需将其添加到路径中:

pnpm:

pnpm lerna watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME

yarn:

yarn lerna -- watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME

npx:

npx -c 'lerna watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME'
备注

使用 npx 时,您需要使用 -c 并将整个 lerna watch 命令用单引号(')括起来。没有这个,npx 将在将命令传递给 lerna 之前尝试替换监视环境变量,导致 $LERNA_PACKAGE_NAME$LERNA_FILE_CHANGES 始终为空值。

备注

如果您在 Windows 中使用 Lerna,必须用 '%' 框住环境变量。例如:

$ lerna watch -- lerna run build --scope=%LERNA_PACKAGE_NAME% --include-dependents