gpt4 book ai didi

npm - 单体仓库和多个 node_modules 文件夹

转载 作者:行者123 更新时间:2023-12-04 17:07:49 25 4
gpt4 key购买 nike

我有一个使用单体存储库的项目。每个包都有自己的 package.json 文件来管理所述包的依赖关系。我正在使用 lerna在我们的 monorepo 应用程序的所有“子包”中安装包。

当前的项目结构如下所示

项目/
|包.json
|节点模块/
|- 包/
|-- 包1/
|--- 包.json
|--- 节点模块/
|-- 包2/
|--- 包.json
|--- 节点模块/

我正在寻找一种在根 node_modules 文件夹中概括常见依赖项的方法,这样每个包在运行 lerna exec -- npm install 时不会提取自己的节点包副本而是使用位于整体存储库根目录的那个,这样我们就可以避免在多个存储库中安装相同的包,从而减少项目的大小。

我已经看到了一些解决方案,包括在项目之间建立一些符号链接(symbolic link),但这似乎不是一门精确的科学,因为符号链接(symbolic link)支持非常依赖于操作系统。此外,这似乎不是一种受支持的方式。

目前,我们才刚刚开始,在运行 lerna exec -- npm install 之后该项目在磁盘上已经有大约 350mb,第一次从 npm 中提取所有内容大约需要 5 分钟。随着项目会随着时间的推移而增长,这个时间也会随着时间的推移而延长......

因此,为了恢复一切,我正在寻找一种方法来提取 repo 根目录下的 node_modules 文件夹中的公共(public)依赖项,并使子包从该文件夹中提取它们的公共(public)依赖项,而不是每次都获取自己的副本。

最佳答案

Lerna 最近添加了一个 --hoist看起来像它的选项提供了您在此处寻找的内容。它在 repo 根目录安装外部依赖项,因此它们可用于所有包。二进制文件链接到依赖包 node_modules/.bin/目录,以便它们可用于 npm 脚本。

它可以在命令行中传递或添加到 lerna.json用于耐用的配置。

此处提供文档:https://github.com/lerna/lerna#--hoist-glob

关于npm - 单体仓库和多个 node_modules 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39737024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com