yarn与npm的区别

一、定义

1、npm

npm 是 Node.js 的包管理工具,Node.js package manger,包就是别人写的 Node.js 模块。我们通过 npm,可以方便的使用第三方开发的开源模块,同时也可以把自己的模块发布到 npm 供其它开发者使用。

在初始化 Node.js 项目的时候我们需要通过 npm init 命令,把自己的代码初始化成为 npm 包,这样我们才能更加方便地去使用别人的 npm 包。

npm 通过 Node.js 模块根目录的package.json文件获取模块元数据和依赖关系等。

npm中文文档:npm 中文文档 | npm 中文网

2、yarn

yarn 是由 Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具,为了解决当时 npm 的一些缺陷。

yarn中文文档:Yarn 中文文档

二、npm的缺点

1、速度慢

npm 按照队列执行安装每个 package,只有当前 package 安装完成之后,才会进行后面的安装。

2、同一个项目,npm 安装的时候无法保持一致性

由于 package.json 文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义:

"5.0.3",  //安装指定的5.0.3版本
"~5.0.3", //安装5.0.X中的最新版本
"^5.0.3"  //安装5.X.X中的最新版本

3、npm 安装的时候,一个包抛出错误,npm 会继续下载安装包

npm 安装的时候,一个包抛出错误,npm 会继续下载安装包,而且因为 npm 会把所有的日志输出到终端,有关错误包的错误信息就会淹没在 npm 打印的警告中,你甚至不会发现错误的产生。

三、yarn与npm的区别

1、共同点

yarn与npm都是包管理工具,都可以安装包和模块。

2、区别

npm克隆并初始化一个项目

git clone xxx
npm install
npm run dev

yarn克隆并初始化一个项目

git clone xxx
yarn
yarn start

npm会生成一个package-lock.json的文件,yarn会生成一个yarn.lock的文件

3、yarn的优点

① yarn的速度快

并行安装:npm和 yarn 在执行包的安装时,都会执行一系列任务。npm 是按照队列执行每个 package,必须要等到当前 package 安装完成之后,才能继续后面的安装。而yarn 是同步执行所有任务,提高了性能。

离线模式:如果之前已经安装过一个软件包,用yarn再次安装时之间从缓存中获取,就不用像npm那样再从网络下载了。

安装版本统一:为了防止拉取到不同的版本,yarn 有一个锁定文件 记录了被确切安装上的模块的版本号。每次只要新增了一个模块,yarn 就会创建(或更新)yarn.lock 这个文件,每一次拉取同一个项目依赖时,使用的都是一样的模块版本;npm 其实也有办法实现处处使用相同版本的 packages,但需要开发者执行 npm shrinkwrap 命令,通过 shrinkwrap 命令生成 npm-shrinkwrap.json 文件,只有当这个文件存在的时候,packages 版本信息才会被记录和更新。

② 更简洁的输出

npm 的输出信息比较冗长。在执行 npm install 的时候,命令行里会不断地打印出所有被安装上的依赖。相比之下,yarn 简洁太多:默认情况下,结合了 emoji直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。

③ 多注册来源处理

所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。

④ 更好的语义化

yarn改变了一些npm命令的名称,比如 yarn add/remove,感觉上比 npm 原本的 install/uninstall 要更清晰。

四、npm与yarn命令对比

命令npm包管理工具yarn包管理工具
初始化项目npm inityarn init
快速初始化目录npm init -yyarn init -y

安装项目全部依赖包

npm installyarn或yarn install
添加某个依赖包npm install xxx@3yarn add xxx@3
运行命令npm run xxxyarn run xxx
更新某个依赖项目npm update xxx yarn upgrade xxx
卸载依赖包npm uninstall xxxyarn remove xxx
查找某个包信息npm info xxxyarn info xxx 
淘宝镜像


npm config set registry

https://registry.npm.taobao.org

yarn config set registry

https://registry.npm.taobao.org


 

### 回答1: Yarnnpm都是JavaScript包管理器,它们之间的主要区别在于安装速度、支持的功能和安全性。Yarnnpm更快,因为它使用了缓存机制,每次安装都可以节省宝贵的时间。Yarn还支持一些更高级的功能,例如自动更新所有依赖项,以及确保安装的包具有相同的版本号。此外,Yarn还提供了更好的安全性,可以帮助防止潜在的安全漏洞。 ### 回答2: Yarnnpm都是流行的前端包管理工具,它们之间有以下几点区别: 1. 性能:Yarn在安装包和下载依赖的速度上比npm更快。它通过并行下载和缓存已下载的依赖项来提高性能,因此可以更快地构建项目。而npm在依赖项的下载过程中,会逐个地下载依赖并进行构建,因此速度较慢。 2. 安装流程:npm首先会生成package-lock.json文件,然后安装依赖。而Yarn会生成yarn.lock文件,在执行安装命令时根据该锁定文件来确保依赖的一致性。这样可以避免由于不同安装环境导致的依赖不一致的问题。 3. 命令行界面:Yarn具有更友好的命令行界面,能够提供更直观的用户体验。它的输出更清晰,错误信息更容易理解。npm在这方面相对简化,但也提供了一些有用的功能。 4. 社区支持:npm拥有庞大的社区支持,拥有数量众多且经过验证的包。许多开发者发布其软件包到npm注册表上。相比之下,Yarn的社区支持较小,但随着时间的推移也在不断发展壮大。 综上所述,Yarnnpm都是优秀的包管理工具,选择使用哪个取决于个人的喜好和项目需求。如果在开发过程中需要更快的依赖安装速度和更直观的命令行体验,那么可以选择Yarn。如果项目对包的依赖较多,npm可能是更好的选择,因为它的社区更大,可用的包更多。 ### 回答3: Yarnnpm都是用来管理JavaScript包的工具,它们之间有以下几个区别: 1. 包下载速度:Yarn在包的下载速度上通常比npm更快。这是因为Yarn通过并行下载包的方式加快了下载速度,而npm则是逐个下载。 2. 离线模式:Yarn对于离线模式的支持更好。当以前已经安装过一个包时,Yarn会从缓存中读取并安装,而npm则需要连接到网络进行安装。 3. 安装依赖:Yarn使用一个lock file(yarn.lock)来确保依赖包的版本一致性。这意味着在不同的机器上安装相同的包时,Yarn会确保安装相同的版本。而npm使用一个package.json文件来记录依赖包,但是在不同机器上可能会导致安装不同的版本。 4. 安全:Yarn在包的安全性上更加谨慎。它会检查下载包的完整性并验证其来源。而npm的安全性较差,由于下载速度快的特点,可能会下载到恶意包。 综上所述,Yarn相对于npm在速度、离线模式、包的版本管理和安全性方面有一些优势。因此,在选择使用哪个工具时,可以根据具体需求来做出决定。如果注重速度和安全性,并且在多台机器间协作开发,Yarn可能是更好的选择;而如果需要更大的灵活性和更广泛的包支持,npm可能更适合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值