学习指定 运行 个订单

Lerna specify run order

在我的 monorepo 中,我有 3 个包 package1package2package3,每个包都包含一个名为 build.

的 npm 脚本

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

从根文件夹,我运行 lerna run build。好像运行build的包是按字母顺序排列的。

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

--sort 将无法工作,因为它们没有链接。

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

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

来自lerna -h

--sort Sort packages topologically (dependencies before dependents). Pass --no-sort to disable. [boolean] [default: true]

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

completely disregards concurrency and topological sorting

lerna run build --include-dependencies --stream

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

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

例如:

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