我有这样的标准Lerna
存储库:
my-repo
- package.json
- packages
- api
- package.json
- web-app
- package.json
如果我在两个包中都需要相同的依赖项(例如lodash
),那么教程中的人建议将它安装到两个子模块中,然后使用带有lerna bootstrap --hoist
标志的引导项目。
由于--hoist
标志lodash
依赖项将仅加载到根级别node_modules
,但两个子模块都将其作为依赖项包含在其适当的package.json
但是 Node 的包解析算法会在文件树上搜索文件node_modules
夹。
所以我的问题是为什么我不能只将公共依赖项安装到根级项目?然后lodash
将位于根目录下node_modules
。并且子模块(包)会找到它,因为 Node 会向上搜索,node_module
直到到达文件系统的根目录。
至少它会帮助我避免使用 uncommon lerna bootstrap --hoist
,并且lodash
依赖项只会在顶层出现一次package.json
(而不是两次:在package.json
两个子模块中)