Npm安装依赖,为什么会产生很多文件夹
以前自学node做后台的时候,也过用npm安装依赖,node_modules中的文件夹基本上是和package.json中一一对应的,这次在新公司接手一个用grunt管理的前端项目,install完在node_modules中生成了600多个文件夹……感觉有点不对劲,虽然使用上没问题……而且看之前的人留的文档,基本上也是一一对应的,为什么我就装出这么多文件夹
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
请问我执行
npm ls
是会出现npm error extraneous
的错误,查了好像是说下载的模块没有添加到package.json的依赖中,不知道是不是这种原因。最近也是发现自己的项目npm install后无端跑出好多莫名的模块但是我的node -v 的版本还是v4.2.4
回答我的问题吧
何必理会呢,用grunt/gulp/fis3发布出来就行了
这是
npm3
中作出的改变,也是最大的改变之一,5.0 用的是 npm3。npm -v
可以查看 npm 版本。个人认为,这一改变还是有很多好处的。
首先,npm 2.0 时代各个模块中的公共模块没有做到复用,都有自己的一份依赖,这些模块造成了很大的冗余。这种方式的一大弊端就是导致
node_modules
的目录层级非常的深,以至在 windows 下会出现node_modules
路径过长,无法删除。其次,2.0 的管理方式不太适合做前端的包管理,比如我用 npm 安装了一个插件依赖了
jQuery 1.10
,而另一个插件依赖了jQuery 1.11.3
,npm 会把这两个版本的 jQuery 分别下载到对应插件的node_modules
中。最后打包压缩的时候就会出现压缩了两个 jQuery 的情况,这在 node 应用中没有问题,但是在前端项目中就不行了,这显然不是我们所需要的。npm3 中把依赖扁平化处理就很好的解决了这个问题,它只会在 node_modules 中保留一个较新的 jQuery。对于你评论中说的 hbuilder 的问题,有可能和这种目录结构有关,如果有关,那也是 hbuilder 的一个 bug,你可以换用 npm2 来安装测试一下。
我升级到最新版的5.X,npm install也是安装了很多文件。 恢复到4.X 就可以了。 不清楚5.x是怎么个改变
在5.0以前是递归依赖,现在改为平行依赖。另外,5.0以前在windows下递归依赖会产生很长的文件名,无法删除。算是解决了一个麻烦。