@lerna/exec(翻译)

2,033 阅读1分钟

原文:github.com/lerna/lerna…

在每个包中执行任意命令

安装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>