@lerna/run(翻译)

4,882 阅读1分钟

原文:github.com/lerna/lerna…

在包含该脚本的每个包中运行一个npm脚本

安装lerna以访问lerna CLI。

使用

$ lerna run <script> -- [..args] # 在所有有my-script脚本的包中运行npm run my-script
$ lerna run test
$ lerna run build

# 观察所有包和传输的变化,流式前缀输出
$ lerna run --parallel watch

在包含该脚本的每个包中运行一个npm脚本。双破折号(--)是将虚线参数传递给脚本执行所必需的。

选项

lerna run接受所有筛选器标志。

$ lerna run --scope my-component test

--npm-client

必须是知道如何运行npm生命周期脚本的可执行文件。默认的--npm client是npm。

$ lerna run build --npm-client=yarn

也可以在lerna.json中配置:

{
  "command": {
    "run": {
      "npmClient": "yarn"
    }
  }
}

--stream

立即从子进程输出流,并以原始包名称为前缀。这使得来自不同包的输出可以被交错。

$ lerna run watch --stream

--parallel

类似于--stream,但完全忽略并发性和拓扑排序,在所有匹配的包中立即运行给定的命令或脚本,并带有前缀流输出。这是长时间运行的进程(如npm run watch run over many package)的首选标志。

$ lerna run watch --parallel

注意:建议在使用--parallel标志时约束此命令的范围,因为生成几十个子进程可能会损害shell的稳定性(例如,最大文件描述符限制)。YMMV

--no-bail

# 运行命令,忽略非零(错误)退出代码
$ lerna run --no-bail test

默认情况下,如果任何执行返回非零退出代码,lerna run将退出并返回错误。通过使用 --no-bail来禁用此行为,在所有包中执行,而不考虑退出代码。

--no-prefix

当输出为流式时禁用包名前缀(--stream或--parallel)。当将结果管道传输到其他进程(如编辑器插件)时,此选项非常有用。

--profile

分析命令执行情况并生成性能配置文件,可以在基于Chromium的浏览器中使用DevTools进行分析(直接url:devtools://devtools/bundled/devtools_app.html). 配置文件显示命令执行的时间轴,其中每个执行都分配给一个打开的插槽。插槽数由--concurrency选项确定,打开的插槽数由--concurrency减去正在进行的操作数确定。最终的结果是命令的并行执行可视化。

性能概要文件输出的默认位置位于项目的根目录。

$ lerna run build --profile

注意:只有在启用了拓扑排序(即不使用--parallel和--no sort)时,Lerna才会评测。

--profile-location

可以为性能配置文件输出提供自定义位置。提供的路径将相对于当前工作目录进行解析。

$ lerna run build --profile --profile-location=logs/profile/