为什么npm用的时间越长越喜欢yarn?
为什么npm用的时间越长越喜欢yarn?
要回答这个问题,我们首先要知道npm的痛点
1.同一个项目,不同的人安装,可能会报不同的错,或者会产生意外的bug。
2.安装包时,中途某个包抛出了错误,也不会停止,而是被大量的警告或者提示给掩盖,混杂在一起,十分不利于分析问题,对于新手或者不熟悉的人来说是一场灾难。
3.npm官方包安装很慢,除非使用淘宝镜像。
4.npm包管理命令相比较yarn,没有yarn好记。
5.欢迎留言补充……
下面我们来详细说说npm的4个问题
一、同一个项目,不同的人安装,安装的时候无法保持版本的一致性,导致安装失败,或者报错,我经常遇到,那么细心的同学有没有注意到package.json中的依赖有这几种:"6.0.0", "~6.0.0", "^6.0.0"?
有没有?有的对吧!那么他们分别什么意思呢,解释下
“6.0.0”表示安装指定的6.0.0版本
“~6.0.0”表示安装6.0.X中最新的版本
“6.0.0”表示安装6.X.X中最新的版本。
所以,明白了为什么同一个项目,不同的人安装效果不同了吧?因为package.json只能锁定大的版本号。
说到这里,有同学说不对啊,虽然package.json只能锁定大的版本号,但是当我使用npm install命令时,不是要自动生成一个package-lock.json文件吗?这个文件可以帮助我锁定具体的版本号和下载地址等等信息,让我的项目不会因为非必要升级导致的错误啊,
这没错,但是实际开发过程中,绝大部分开发者都会因为npm安装包慢的问题,而放弃npm而使用cnpm,这个时候cnpm能不能识别package-lock.json中的信息?会不会依据这个文件的信息去安装依赖?答案是不会,这个时候cnpm只会根据package.json的大版本去下载最新的包,这个时候各种意外就产生了,cnpm抛了一大堆错误出来,很麻烦的对不对?所以放弃npm这是第一个理由吧
二、安装包时,npm会同时下载和安装,中途某个包抛出了错误或警告,也不会停止,而是直到结束,把所有的信息输出给你,考验你?
三、npm官方包安装很慢,都会使用cnpm,国内淘宝镜像版本,该镜像版本会每隔10分钟同步更新一次npm包
$ npm install -g cnpm --registry=https://registry.npm.taobao.org //注意:$表示是指令,输入时忽略
$ cnpm install 包名;
//比如
cnpm install vue
四、包命令对比
npm install yarn add npm install 包名 --save yarn add 包名 npm uninstall 包名 --save yarn remove 包名 npm install 包名 --save-dev yarn add 包名 --dev
yarn的优点
1. 速度更快
2. 安装版本统一
为了防止拉取到不同的版本,Yarn 有一个锁定文件 (lock file) 记录了被确切安装上的模块的版本号。
每次只要新增了一个模块,Yarn 就会创建(或更新)yarn.lock 这个文件。这么做就保证了,每一次拉取同一个项目依赖时,使用的都是一样的模块版本。
3. 更简洁的日志输出
4. 多注册来源处理
所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。
5. 更好的语义化命令
浙公网安备 33010602011771号