跳至主要内容

工作区监视

注意

工作区监视功能从 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