CNode

NPM 会将 node_modules 依赖包扁平化吗?

问答
JJexCheng发布于11 年前最后回复9 年前10 回复10979 浏览0 收藏

NPM 安装时每个依赖的包都重新复制了一份,导致一个小小的项目安装完依赖就占了几百M的空间,而且node_modules/xxx/node_modules...... 路径太深,还不知道NPM有没有重复下载,不是一般无语,看有人提了 Issue 建议用 node_modules/package@version 这样扁平化的方式管理,减少重复文件,但官方竟然拒绝了,不知道他们脑子里想的什么。我印象中好像有提到说 NPM 新版将支持node_modules扁平化目录树,但没找到具体消息。

查看回复

回复 (10)

I
i5ting#1·11 年前

支持了

J
JexCheng#2·11 年前
引用 i5ting支持了

@i5ting 支持了?我用 npm 最新版本 2.13.4 安装还是有很多层 node_modules啊?

X
xieren58#3·11 年前

3.0

J
JexCheng#4·11 年前
引用 xieren583.0

@xieren58 试了下,是扁平了一点,只是没有完全扁平,而且发现用了3.x的NPM安装后体积竟然更大了 -_-! 还是放弃

M
magicdawn#5·11 年前

不, node_modules 的主要目的是为了 multi version , 即同一个项目使用一个包的两个版本不冲突, 减少文件不是主要目的

当然, 你可以 npm dedupe https://docs.npmjs.com/cli/dedupe

Y
yakczh#6·11 年前

支持 node_modules长了windows下都删除不了

K
klesh#7·11 年前

运行时几百M问题不大,GIT的时候一定要ignore这个文件夹(PS,BOWER的文件夹也要IGNORE)。布署的时候传GIT的源码或者直接在GIT中CHECKOUT,完了之后再在服务器 npm install 一下,服务器上安装也快,NPM有没有CACHE没具体测试过,目测是有的,照理这种问题NPM的开发人员应该会注意到。

J
JexCheng#8·11 年前
引用 magicdawn不, node modules 的主要目的是为了 multi version , 即同一个项目使用一个包的两个版本不冲突, 减少文件不是主要目的 当然, 你可以 npm dedupe http...

@magicdawn 我不是说了目录名为 package@version 之类的组织方式解决多版本的问题了么? dedupe 这个功能不应该默认的么?

M
magicdawn#9·11 年前
引用 JexCheng@magicdawn 我不是说了目录名为 package@version 之类的组织方式解决多版本的问题了么? dedupe 这个功能不应该默认的么?

@JexCheng ...

package@version require('some-module') 要先去查看包依赖的some-module版本, 要修改require时的逻辑... 但是这样就是centerlized 了 , I hate centerlize.

S
spitWind#10·9 年前

挖坟/// 不需要呀require(‘some-module’) 完全可以忽略 版本 去寻找当前packer 依赖的模块 ,然后不就可以了

参与回复
登录后即可参与回复。登录