yarn英文官网
yarn是软件包管理器,允许世界上所有开发人员一起使用和共享代码,同时也是一个项目管理工具。使用yarn可以使项目安全、稳定,且可更容易复用。
yarn可以适用于小型项目或大型单体仓库。
yarn具有很多其他开发者共享的插件,我们在使用yarn时可以使用其他开发者的共享出来的插件来解决开发中遇到的问题,如果使用过程中遇到问题,我们可以在对应网站上使用issue进行报告问题或反馈,当问题修复后, 我们可以使用 Yarn 来更新这个解决方案,让它更新为被修复后的最新状态。
代码通过称为package(包)的东西共享。一个package包含所有共享的代码以及一个描述该package的package.json文件(称为manifest(清单))。
安装
一、全局安装
在整个系统中使用单个包管理器一直是一个问题。为了稳定,安装需要跨环境使用相同的包管理器版本,否则就会有在在版本之间引入意外破坏性更改的风险 - 毕竟,这就是为什么首先引入锁文件的概念!由于 Yarn 在某种意义上是您的第一个项目依赖项,因此“锁定”它也应该是有意义的。
因此,Yarn 2 及更高版本旨在按项目进行管理。别担心,变化不大!只需确保首先安装我们将用于生成本地的全局 Yarn 二进制文件:
npm install -g yarn
使用 yarn --vesion查看yarn是否安装成功,及其对于版本号。
类似1.22的信息,
全局安装的 Yarn 是属于 “经典版本” 序列(即 1.x),这正是yarn开发者所期待的,这个系统的一个额外好处是,为 Yarn 1 配置的项目将继续使用它,而不是突然必须迁移到 2.x 配置格式。如果Yarn从一开始就被“锁定”了,我们就不需要这么做了。
二、项目安装
全局安装 Yarn 的最新版本:
npminstall-gyarn
进入你的项目文件夹:
cd~/path/to/project
运行以下命令:
yarnsetversion berry
"Berry" 是 Yarn 2 发布序列的代号,同时也是我们的 代码仓库 的名称!
提交新增和修改过的文件。参见 哪些文件需要被添加到 .gitignore 配置文件中?
大型项目的构建,最终目的需要持续高质量的生产在各种终端平台上可交付部署的代码。
三、更新到最新版本
如果您以后想将 Yarn 更新到最新版本,只需运行:
yarnsetversion latest
然后 Yarn 将从我们的网站下载最新的二进制文件,并将其安装到您的项目中。不要忘记运行新安装来更新依赖项,更新结果!
四、安装 master 分支的最新构建版本
随着时间的推移,即使最新版本也不够新了,那么你可能希望尝试最新的 master 代码分支,以检查 Bug 是否已修复。这在 Yarn 2 中已经变得非常简单了!只需运行以下命令即可:
yarnsetversion from sources
同样的,还可以使用 --branch 参数来指定要安装特定的 PR:
yarnsetversion from sources--branch1211
yarn和npm的区别
npm缺陷
npm install速度巨慢。
同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。
"5.0.3", //“5.0.3”表示安装指定的5.0.3版本
"~5.0.3", // “~5.0.3”表示安装5.0.X中最新的版本
"^5.0.3"//“^5.0.3”表示安装5.X.X中最新的版本
这就麻烦了,常常会出现同一个项目,有的同事是OK的,有的同事会由于安装的版本不一致出现bug。
安装的时候,包会在同一时间下载和安装,中途某个时候,一个包抛出了一个错误,但是npm会继续下载和安装包。因为npm会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆npm打印的警告中丢失掉,并且你甚至永远不会注意到实际发生的错误。
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
多注册来源处理:所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。
更好的语义化: yarn改变了一些npm命令的名称,比如 yarn add/remove,感觉上比 npm 原本的 install/uninstall 要更清晰。
yarn和npm的主要区别介绍:
\1. yarn虽然和nom一样是本地缓存,但是yarn无需互联网链接就能安装本地缓存的依赖项,提供了离线模式,而这个是npm实现不了的。
\2. yarn解决了由于语义版本控制而导致的npm的不确定性问题,通过安装时创建的默认文件,确保使用的库的版本相同。
\3. yarn增加了一些能让开发人员并行化处理所有必需的操作,且通过添加了一些改进,使得运行速度有了显著的提升,整个安装时间也变得更少。
\4. npm的输出信息比较冗长,相比之下,yarn简洁很多。默认情况下,直观且直接地打印出必要的信息。
\5. yarn的语义相对于npm更加清晰,主要是因为yarn改变了一些npm的命令名称,看上去就更清晰了。
yarn 和 npm 命令对比
查看版本yarn --version
npm -version(或者 node -v)
安装淘宝镜像yarn config set registry 'https://registry.npm.taobao.org'
npm install -g cnpm --registry=http://registry.npm.taobao.org
初始化某个项目yarn init
npm init
默认安装项目依赖yarn install
cnpm install
安装依赖,并且默认保存到 packageyarn add xxx
cnpm install xxx --save
卸载依赖yarn remove xxx
cnpm uninstall xxx --save
更新依赖yarn upgrade xxx
cnpm update xxx --save
安装全局项目依赖yarn global add xxx
cnpm install xxx -g
安装特定版本号的项目依赖yarn add xxx@
cnpm install [email protected] --save
发布/登录/登出,一系列NPM Registry操作yarn publish/login/logout npm publish/login/logout
运行命令yarn run/test
npm run/test
参考链接:https://www.jianshu.com/p/254794d5e741https://xcx.topsage.com/8986.html
https://zhuanlan.zhihu.com/p/291135958