学习指定 运行 个订单
Lerna specify run order
在我的 monorepo 中,我有 3 个包 package1
、package2
、package3
,每个包都包含一个名为 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
在我的 monorepo 中,我有 3 个包 package1
、package2
、package3
,每个包都包含一个名为 build
.
但是,这些包没有链接在一起。 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