前面聊npm其中还有一个包管理工具,那就是yarn,两者都有安装包和模块,其实用yarn的时候安装会有一个yarn.lock的文件锁定版本,而npm的package-lock.json,就是借鉴了yarn的lock文件。
有个大佬整理了两个工具诞生的时间线,可以看一下:
所以现在如果一般的话直接使用npm毕竟伴随着nodejs安装的时候一起就安装了,目前yarn的一些优点也被npm所借鉴了。
yarn最初的目标是处理npm的缺点,比如性能和安全问题。yarn很快被定位为一个安全、快速、可靠的JavaScript依赖管理工具。但是npm岂能让自己的为他人服务,自然也在不停的更新自己的管理工具,提供更便利简洁的服务。
这两种包管理器在包管理竞赛中并驾齐下,提供了相似的特性和功能。但仍有一些差异,有助于选择使用。
对于原理,就直接黏贴了,毕竟大同小异,大家理解一下即可。
速度和性能
npm和yarn安装第三方包的时候,都会执行一系列任务,但是两者又有区别。
- npm : 任务是安装包的顺序依次下载安装的,也就是意味着它等待一个包下载,然后再下载下一个。
- yarn : 下载包的时候是并行下载。
两者都有缓存机制,但是yarn可能更好一点,通过事项零安装模式,可以快速的安装包,它缓存某个包并且保存再磁盘上,下载再安装的时候,就不需要通过网络连接,而是同磁盘中离线安装。
不过现在的新版本中,yarn的下载速度比nmp也快不了多少了。
零安装是什么意思?
零安装将缓存存储在项目目录中的 .yarn
文件夹中。当使用 yarn
或 yarn add <package>
等命令时,yarn 会创建一个 .pnp.cjs
文件,此文件包含 Node 用于加载项目包的依赖关系层次结构。因此,几乎可以在零时间访问它们。
对 npm 的主要批评之一是在安全性方面,以前的 npm 版本有几个严重的安全漏洞。然而从版本 6 开始,npm 在安装过程中审核软件包并显示是否发现任何漏洞。可以通过对已安装的软件包运行 npm audit
来手动执行此检查,如果发现任何漏洞,npm 会给出相应的安全建议。如发现有安全漏洞,可以运行 npm audit fix
来修复包漏洞。
yarn再执行代码前面,会通过算法校验每个安装包的完整性。
在安全性上,yarn 和 npm 都使用加密哈希算法来确保包的完整性。
常用命令演示
还是为了路径更直观看,还是路径:F:\test
再使用yarn的时候,需要下载通过npm下载这个管理工具。而这个yarn是一个管理工具,所以一般的时候是全局安装:
npm i yarn -g
初始化项目命令:
yarn init
可见也会生成一个json文件如下:
下载第三放包命令
// 添加第三方包
yarn add [包名]
// 添加第三方包带有版本
yarn add [包名]@[版本]
// 安装 开发环境
yarn add [包名] --dev
//通过json下载依赖包命令
yarn insatll
实验来一个安装:
yarn add math
可以看出有了一个lcok文件锁定版本。
升级依赖包:
yarn upgrade [包名]
移除依赖包:
yarn remove [包名]
package.json
文件中的Script中的如何调用,再npm中是 npm run ‘定义命令’,而再yarn中格式:
yarn run '定义的命令'
其实命令大同小异,目前因为NPM的相互借鉴和发展其性能大幅度提高,一般使用npm足够了,所以对于yarn不能说精通,至少能用一些简单的命令,所以本篇算是一个建立的了解和入门。