15

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

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

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

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

--sort不会工作,因为它们没有链接。

4

3 回答 3

26

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

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

来自lerna -h

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

注意可以忽略此拓扑运行某些命令,例如来自lerna exec 的 --parallel 选项文档

完全无视并发和拓扑排序

于 2019-01-13T08:38:14.810 回答
3

lerna run build --include-dependencies --stream

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

于 2020-11-16T08:46:21.113 回答
0

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

前任 :

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

于 2021-09-02T12:29:02.993 回答