【问题标题】:Lerna specify run orderLerna 指定运行顺序
【发布时间】:2018-11-19 00:55:50
【问题描述】:

在我的monorepo中,我有3个包package1、package2、package3,每个包都包含一个名为build的npm脚本。

但是,这些包没有链接在一起。 IE。在链接到同级包的任何包中都没有require()。

从根文件夹,我运行lerna run build。它似乎按字母顺序运行包中的build。

有没有办法指定运行这些包的build命令的顺序?

--sort 不起作用,因为它们没有链接。

【问题讨论】:

  • 有没有找到指定构建顺序的方法?

标签: lerna


【解决方案1】:

您不指定顺序,而是通过将一个包作为另一个包的依赖项来指定拓扑。

如果需要在package2 之前构建package1,则将package1 添加到后者的package.json 文件中package2 的依赖项中。如果您不希望 package2 直接依赖于 package1(例如在生产中),您仍然可以将其添加到 devDependencies 中,Lerna 将理解依赖关系。

来自lerna -h:

--sort 对包进行拓扑排序(依赖项在依赖项之前)。 通过 --no-sort 禁用。 [布尔] [默认:真]

注意可以忽略此拓扑运行某些命令,例如来自lerna exec's --parallel option documentation:

完全忽略并发和拓扑排序

【讨论】:

  • 你救了我的命。
  • 当您尝试删除或更新包含 Lerna 包的项目中的其他依赖项时,这种方式真的很混乱。
【解决方案2】:

lerna run build --include-dependencies --stream

--include-dependencies这个标志可以帮助

【讨论】:

    【解决方案3】:

    您可以先构建您的共享包,然后再触发另一个构建。

    例如:

    yarn workspace @shared run build && yarn lerna run build

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      相关资源
      最近更新 更多