npm5跟yarn的区别

yarn相对原来的npm的优点是你指定的是多少的版本,下载的就是多少的版本
而以前的npm有个问题。那就是他不会去下载你写在package.json里面的版本,而是会去下载最新的版本



比如
现在npm仓库里面有
1.1.0 1.1.1 1.1.2 1.1.3 1.2.0  2.0.0
如果package.json里面是
~1.1.1
那么npm install以后会下载的是1.1.3
^1.1.1下载的是 1.2.0
而如果我们想要得到确切的1.1.1的版本我们需要把前面的符号删去,或者生成一个
npm-shrinkwrap.json文件
但是在npm5以后
在我们安装依赖会生成一个package-lock.json文件用来进行管理,所以以后下载的时候也是会下载固定的版本了

但是yarn就是用来解决这个问题的。现在我们探讨一下他们的区别。
这里研究的是,当原始的package.json文件改变的时候,会发生什么事情。
一开始安装webpack的版本是2.2.0
可以看到所有的版本都是设置成了2.2.0







这里可以到,第三个文件是webpack的json文件。下面的id就是版本了。
但是当我们改不了package.json里面的文件设置成
webpack@2.3.3的时候









可以看到我们实际上安装的版本是2.7.0的版本。
_from跟_id是不同的
就是说我们虽然写的是2.3.3,但是实际上安装的是2.7.0

而我们使用了yarn来进行管理













可以发现。使用yarn下载的包没有_id跟_form

在我们改变版本以后








版本维持一致。

虽然现在的npm也可以锁定版本。但是一旦出现不一致的情况。他还是会去下载最新的包。。。
他只有在package.json跟package-lock.json一致的情况下才会去下载确切版本的包

此次进行测试的
环境为
node 8.9.3
npm 5.5.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值