三、Yarn和npm命令对比

三、Yarn和npm命令对比

导言

Yarn 中文官网

Yarn 英文官网

一、Yarn是什么?

Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的。”这句话让我想起了使用npm时的坑了:

npm install的时候巨慢。特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。

同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。

"5.0.3",

"~5.0.3",

"^5.0.3"

“5.0.3”表示安装指定的5.0.3版本,“~5.0.3”表示安装5.0.X中最新的版本,“^5.0.3”表示安装5.X.X中最新的版本。这就麻烦了,常常会出现同一个项目,有的同事是OK的,有的同事会由于安装的版本不一致出现bug。

安装的时候,包会在同一时间下载和安装,中途某个时候,一个包抛出了一个错误,但是npm会继续下载和安装包。因为npm会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆npm打印的警告中丢失掉,并且你甚至永远不会注意到实际发生的错误。

带着这些坑,我开始了解Yarn的优势及其解决的问题。

二、Yarn的优点?

速度快 。速度快主要来自以下两个方面:

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

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

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

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

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

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

三、Yarn和npm命令对比

npm

yarn

npm install

yarn

npm install react --save

yarn add react

npm uninstall react --save

yarn remove react

npm install react --save-dev

yarn add react --dev

npm update --save

yarn upgrade

四、Yarn常用命令

命令

描述

npm install -g yarn

安装Yarn

yarn add

添加依赖

yarn audit

对已安装的软件包执行漏洞审核

yarn autoclean

从程序包依赖项中清除并删除不必要的文件

yarn bin

显示依赖bin文件夹的位置

yarn cache

管理用户目录中的依赖缓存

yarn check

验证当前项目中程序包依赖项

yarn config

管理依赖配置文件

yarn create

创建Yarn工程

yarn dedupe

删除重复的依赖

yarn generate-lock-entry

生成Yarn锁文件

yarn global

在全局安装依赖

yarn help

显示Yarn的帮助信息

yarn import

迁移当前依赖的项目package-lock.json

yarn info

显示有关依赖的信息

yarn init

初始化工程并创建package.json文件

yarn install

用于安装项目的所有依赖项

yarn licenses

列出已安装依赖的许可证及源码url

yarn link

链接依赖文件夹

yarn list

列出已安装的依赖

yarn login

存储您在 registry 上的用户名和 email

yarn logout

清除你在 registry 上用户名和 email

yarn outdated

列出所有依赖项的版本信息

yarn owner

展示依赖作者

yarn pack

创建依赖项的压缩gzip

yarn policies

规定整个项目中执行Yarn的版本

yarn publish

将依赖发布到npm注册表

yarn remove

删除依赖

yarn run

运行定义的程序脚本命令

yarn tag

在依赖上添加,删除或列出标签

yarn team

管理组织中的团队,并更改团队成员身份

yarn test

运行程序的test命令

yarn upgrade

将指定依赖升级为最新版本

yarn upgrade-interactive

更新过期依赖的简便方法

yarn version

展示依赖版本信息

yarn versions

展示所有依赖项版本信息

yarn why

显示有关为什么安装依赖的信息

yarn workspace

Yarn的工作区信息

yarn workspaces

Yarn的所有工作区信息

相关推荐

调四和钓四是灵还是钝(调四和钓四详解)
365bet客户端下载

调四和钓四是灵还是钝(调四和钓四详解)

📅 08-08 👁️ 6257
客家人猜码口诀与手势?(客家话猜码口诀)
det365官网登录

客家人猜码口诀与手势?(客家话猜码口诀)

📅 01-23 👁️ 5725
汾酒属于什么香型的白酒,汾酒什么香型酒?
365bet客户端下载

汾酒属于什么香型的白酒,汾酒什么香型酒?

📅 10-04 👁️ 6935
中国消费领域的一股重要力量 小数桔创始人孙溿
365bet客户端下载

中国消费领域的一股重要力量 小数桔创始人孙溿

📅 07-03 👁️ 5628
中华人民共和国国务院令(第712号)  政府投资条例
365bet客户端下载

中华人民共和国国务院令(第712号)  政府投资条例

📅 10-01 👁️ 2061
大仙衙门
体育在线365

大仙衙门

📅 07-18 👁️ 8429