解决npm install安装了太多架包的问题

首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

                    

安装vue 1.0.28时,执行如下命令,却发现node_modules文件里猛然增加了几十个架包,看起来非常不爽。

#   只安装Vue V1的最新版本npm install vue@">=1.0.28 < 2.0.0" --save#   输出目录文件   ll node_modeles/
  
  
  • 1
  • 2
  • 3
  • 4

执行ll命令后,输出的内容如下:

drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 acorn/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 amdefine/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 ast-types/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 balanced-match/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 base62/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 bootstrap/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 brace-expansion/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 commander/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 commoner/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 concat-map/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 defined/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 detective/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 envify/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 esprima-fb/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 font-awesome/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 glob/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 graceful-fs/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 graceful-readlink/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 iconv-lite/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 inflight/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 inherits/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 jqGrid/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 jquery/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 jstransform/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 minimatch/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 minimist/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 mkdirp/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 object-assign/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 once/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 path-is-absolute/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 private/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 q/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 recast/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 require-css/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 requirejs/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 source-map/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 text/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 through/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 vue/drwxr-xr-x 1 yiifaa 197609 0 12月  7 16:10 wrappy/
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

对比package.json文件,发现内容增多了几倍,package.json的依赖如下:

"dependencies": {    "bootstrap": "^3.3.6",    "font-awesome": "^4.7.0",    "jqGrid": "^5.1.1",    "jquery": "^3.1.1",    "require-css": "^0.1.8",    "requirejs": "^2.3.2",    "text": "github:requirejs/text",    "vue": "^1.0.28" }
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这些莫名奇妙的acorn、amdefine……是从哪里来的?

查看npm使用文档后,添加参数–only参数,只安装生产版本,发现node_modules目录的结果依旧如此,命令如下。

# --only还可以取值为dev或development,表示还会安装开发依赖npm install vue@">=1.0.28 < 2.0.0" --save --only=production
  
  
  • 1
  • 2

继续翻阅npm使用文档,发现文档里有一段这样的话

dependencies will be added as close to the top as is possible without breaking any other modules
  
  
  • 1

原来如此!NPM从3.0.0开始,架包的依赖不再安装在每个架包的node_modules文件夹内,而是安装在顶层的node_modules文件夹中。如果要启用之前的风格,则可以添加命令参数legacy-bundling,如下:

#   清空node_modules文件后,重新执行命令npm install vue@">=1.0.28 < 2.0.0" --legacy-bundling
  
  
  • 1
  • 2

再次运行”ll node_modeles/”,发现架包已经干净清澈了很多,与package.json完全呼应上了,如下:

drwxr-xr-x 1 yiifaa 197609 0 12月  7 15:53 bootstrap/drwxr-xr-x 1 yiifaa 197609 0 12月  7 15:53 font-awesome/drwxr-xr-x 1 yiifaa 197609 0 12月  7 15:53 jqGrid/drwxr-xr-x 1 yiifaa 197609 0 12月  7 15:53 jquery/drwxr-xr-x 1 yiifaa 197609 0 12月  7 15:53 require-css/drwxr-xr-x 1 yiifaa 197609 0 12月  7 15:53 requirejs/drwxr-xr-x 1 yiifaa 197609 0 12月  7 15:53 text/drwxr-xr-x 1 yiifaa 197609 0 12月  7 15:53 vue/
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

结论

执行npm install后,造成node_modules文件夹中出现了太多架包,并非是命令执行错误或者是环境的问题,而是npm升级导致的规范变更。

脑中突然浮现一个问号,npm官方为何不将这些依赖全部存入一个固定的文件夹,例如dependence,这样既能保证所有库包的版本兼容性,又能保证node_modules的干净性?

           

浏览人工智能教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值