本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
工作区监听
工作区监听功能自 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