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