工作空间监视
备注
工作空间监视从 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