【发布时间】:2017-02-05 19:33:50
【问题描述】:
我有一个使用单体存储库的项目。每个包都有自己的 package.json 文件来管理所述包的依赖关系。我正在使用lerna 在我们的 monorepo 应用程序的所有“子包”中安装包。
目前的项目结构是这样的
项目/ |包.json |节点模块/ |- 包/ |-- 包1/ |--- 包.json |--- 节点模块/ |-- 包2/ |--- 包.json |--- node_modules/
我正在寻找一种方法来概括根 node_modules 文件夹中的常见依赖项,以便每个包在运行 lerna exec -- npm install 时不会提取自己的节点包副本,而是使用位于根目录的那个整体存储库,因此我们避免在多个存储库中安装相同的包,从而减少项目的大小。
我已经看到了一些解决方案,包括在项目之间建立一些符号链接,但这似乎不是一门精确的科学,因为符号链接支持非常依赖于操作系统。此外,这似乎不是一种受支持的方式。
目前,我们才刚刚开始,在运行 lerna exec -- npm install 之后,该项目已经在磁盘上大约 350mb,第一次从 npm 提取所有内容大约需要 5 分钟。由于项目会随着时间的推移而增长,这个时间也会随着时间的推移而延长......
所以要恢复一切,我正在寻找一种方法来提取 repo 根目录下的 node_modules 文件夹中的公共依赖项,并使子包从该文件夹中提取它们的公共依赖项,而不是每次都获取自己的副本.
【问题讨论】:
标签: npm node-modules lerna