【发布时间】:2018-12-12 08:56:19
【问题描述】:
我有这样的标准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,直到到达文件系统的根目录。
至少它会帮助我避免使用不常见的lerna bootstrap --hoist,以及lodash 依赖项只会在顶级package.json 出现一次(而不是两次:在两个子模块的package.json 中)
【问题讨论】: