在每个包中执行任意命令
安装lerna以访问lerna CLI。
使用
$ lerna exec -- <command> [..args] # 在所有包中运行命令
$ lerna exec -- rm -rf ./node_modules
$ lerna exec -- protractor conf.js
在每个包中运行任意命令。双破折号(--)对于将虚线标志传递到派生的命令是必需的,但当所有参数都是位置参数时则不需要。
当前包的名称可通过环境变量LERNA_package_name获得:
$ lerna exec -- npm view \$LERNA_PACKAGE_NAME
您也可以通过环境变量LERNA_root_PATH在复杂的dir结构中运行根目录中的脚本:
$ lerna exec -- node \$LERNA_ROOT_PATH/scripts/some-script.js
选项
lerna exec接受所有筛选器标志。
$ lerna exec --scope my-component -- ls -la
使用给定的并发性并行生成命令(除了使用--parallel)。输出是通过管道传输的,因此不具有确定性。如果要在一个又一个包中运行命令,请按如下方式使用:
lerna exec --concurrency 1 -- ls -la
--stream
立即从子进程输出流,并以原始包名称为前缀。这使得来自不同包的输出可以被交错。
$ lerna exec --stream -- babel src -d lib
--parallel
类似于--stream,但完全忽略并发性和拓扑排序,在所有匹配的包中立即运行给定的命令或脚本,并带有前缀流输出。这是长时间运行的进程(如babel src-dlib-w)在许多包上运行的首选标志。
$ lerna exec --parallel -- babel src -d lib -w
注意:建议在使用--parallel标志时约束此命令的范围,因为生成几十个子进程可能会损害shell的稳定性(例如,最大文件描述符限制)。YMMV
--no-bail
# 运行命令,忽略非零(错误)退出代码
$ lerna exec --no-bail <command>
默认情况下,如果任何执行返回非零退出代码,lerna exec将退出并返回错误。通过使用 --no-bail来禁用此行为,在所有包中执行,而不考虑退出代码。
--no-prefix
当输出为流式时禁用包名前缀(--stream或--parallel)。当将结果管道传输到其他进程(如编辑器插件)时,此选项非常有用。
--profile
分析命令执行情况并生成性能配置文件,可以在基于Chromium的浏览器中使用DevTools进行分析(直接url:devtools://devtools/bundled/devtools_app.html). 配置文件显示命令执行的时间轴,其中每个执行都分配给一个打开的插槽。插槽数由--concurrency选项确定,打开的插槽数由--concurrency减去正在进行的操作数确定。最终的结果是命令的并行执行可视化。
性能概要文件输出的默认位置位于项目的根目录。
$ lerna exec --profile -- <command>
注意:只有在启用了拓扑排序(即不使用--parallel和--no sort)时,Lerna才会评测。
--profile-location
可以为性能配置文件输出提供自定义位置。提供的路径将相对于当前工作目录进行解析。
$ lerna exec --profile --profile-location=logs/profile/ -- <command>