与所有软件包共享root package.json中的工具

时间:2019-09-20 09:38:53

标签: node.js npm lerna monorepo

我正在使用 Lerna npm 构建一个monorepo。它具有根package.json的典型结构,并且在子目录packages/*中具有更多软件包。

每个程序包都有一个名为build的脚本,该脚本依赖于rimraftsc和其他一些工具。

要构建所有软件包,我使用lerna run build,它可以完美工作。但是,当分别在其中一个程序包中运行npm run build时,它将失败,因为找不到共享工具rimraf等。

据我了解,import语句首先在./node_modules中查找包,如果找不到,则在../node_modules中查找包,依此类推,直到文件系统的根。但是package.json脚本似乎只签入./node_modules/.bin。并且lerna run必须在做一些魔术,以使根./node_modules/.bin可用于构建脚本。

这应该如何工作?我必须将所有工具添加到所有软件包中吗?

1 个答案:

答案 0 :(得分:0)

一种快速的解决方案是像这样向根package.json添加不同的构建脚本:

"build": "lerna run build --parallel",
"build:packageA": "lerna run build --parallel --scope packageA"