我正在使用 Lerna 和 npm 构建一个monorepo。它具有根package.json
的典型结构,并且在子目录packages/*
中具有更多软件包。
每个程序包都有一个名为build
的脚本,该脚本依赖于rimraf
,tsc
和其他一些工具。
要构建所有软件包,我使用lerna run build
,它可以完美工作。但是,当分别在其中一个程序包中运行npm run build
时,它将失败,因为找不到共享工具rimraf
等。
据我了解,import语句首先在./node_modules
中查找包,如果找不到,则在../node_modules
中查找包,依此类推,直到文件系统的根。但是package.json
脚本似乎只签入./node_modules/.bin
。并且lerna run
必须在做一些魔术,以使根./node_modules/.bin
可用于构建脚本。
这应该如何工作?我必须将所有工具添加到所有软件包中吗?
答案 0 :(得分:0)
一种快速的解决方案是像这样向根package.json
添加不同的构建脚本:
"build": "lerna run build --parallel",
"build:packageA": "lerna run build --parallel --scope packageA"