当前位置:网站首页>yarn详细入门教程
yarn详细入门教程
2022-08-04 16:56:00 【猫老板的豆】

文章目录
简介
Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。
就像我们可以从官方文档了解那样,它的目的是解决这些团队使用 npm 面临的少数问题,即:
- 安装的时候无法保证速度/一致性
- 安全问题,因为 npm 安装时允许运行代码
Yarn 同样是一个从 npm 注册源获取模块的新的 CLI 客户端。注册的方式不会有任何变化 —— 你同样可以正常获取与发布包。
优点
1. 速度快
主要还是 yarn 运行速度得到了显著的提升,整个安装时间也变得更少。
速度快主要来自以下两个方面:
- 并行安装:无论 npm 还是 yarn 在执行包的安装时,都会执行一系列任务。npm 是按照队列执行每个 package,也就是说必须要等到当前 package 安装完成之后,才能继续后面的安装。而 yarn 是并行执行所有任务,提高了性能。
- 离线模式:如果之前已经安装过一个软件包,用 yarn 再次安装时之间从缓存中获取,就不用像 npm 那样再从网络下载了。
2. 一致性
为了防止拉取到不同的版本,Yarn 有一个锁定文件 lock file 记录了被确切安装上的模块的版本号。
每次只要新增了一个模块,Yarn 就会创建(或更新)yarn.lock 这个文件。
这么做就保证了,每一次拉取同一个项目依赖时,使用的都是一样的模块版本。
安装
1. 官方下载安装
2. npm 安装
最简单的方法是运行:
npm install -g yarn
现在的 yarn 安装页面是这么说的:
注意:通常情况下不建议通过npm进行安装。npm安装是非确定性的,程序包没有签名,并且npm除了做了基本的SHA1哈希之外不执行任何完整性检查,这给安装系统程序带来了安全风险。
基于这些原因,强烈建议你通过最适合于你的操作系统的安装方法来安装yarn。
以这种速度发展下去的话,如果yarn要宣布他们自己的registry,让开发者慢慢淘汰npm的话,我们一点都不会感到惊讶。
安装成功后即可查看版本:
yarn --version

初始化
进入项目目录下并执行 yarn init
yarn init

会在根目录下生成一个 package.json ,与 npm 类似具体不做解释,如下
添加依赖
1. 添加包
yarn add [pkg-name] ,会自动安装最新版本,会覆盖指定版本号
举例添加 jquery :
yarn add jquery

node_modules下会生成 jquery 文件夹,里面便是 yarn 生成的依赖
2. 一次性添加多个包
yarn add [pkg-name1] [pkg-name2]
举例添加 bootstrap 和 zepto:
yarn add bootstrap zepto

成功后如下
3. 添加指定版本的包
yarn add [pkg-name]@ver
举例添加 2.1.4版本的jquery:
yarn add [email protected]

成功后如下
4. 将包更新到指定版本
yarn upgrade [pkg-name]@ver
举例将 jquery从2.1.4更新到3.0.0版本:
yarn upgrade [email protected]

成功后如下
5. 将包更新到最新版本
yarn upgrade --latest [pkg-name]
举例将3.0.0版本的 jquery更新到最新版本:
yarn upgrade --latest jquery

成功后如下
6. 删除包
yarn remove [pkg-name]
举例删除 jquery:
yarn remove jquery

成功后如下
7. 一次删除多个包
yarn remove [pkg-name1] [pkg-name2]
举例删除 bootstrap 和 zepto:
yarn remove bootstrap zepto

yarn.lock 自动锁定安装包版本
Npm 有一个名为 shrinkwrap 的特性,其目的是在生产环境中使用时锁定包依赖。shrinkwrap 的挑战是每个开发者都必须手动运行 npm shrinkwrap 生成 npm-shrinkwrap.json 文件。
使用 Yarn,则截然不同。在安装过程中,会自动生成一个 yarn.lock 文件,yarn.lock 会记录你安装的所有大大小小的。有点类似 PHP 开发者们所熟悉的 composer.lock。yarn.lock 锁定了安装包的精确版本以及所有依赖项,只要你不删除 yarn.lock 文件,再次运行 yarn install 时,会根据其中记录的版本号获取所有依赖包。有了这个文件,你可以确定项目团队的每个成员都安装了精确的软件包版本,部署可以轻松地重现,且没有意外的 bug。你可以把 yarn.lock 提交到本库里,这样其他签出代码并运行 yarn install 时,可以保证大家安装的依赖都是完全一致的。
例如上面安装的bootstrap、jquery和zepto会在yarn.lock中有记录,如下图:

这里新建一个 yarn_demo2 的文件夹,并将 package.json 和 yarn.lock 文件从 yarn_demo 文件夹中复制过来,如下图:

进入yarn_demo2 文件夹 执行 yarn 命令,即可一键下载 yarn.lock 中记录的依赖包,相当方便快捷,值得你拥有~


yarn 和 npm 命令对比

其他
至于bower与npm,其用法也是大同小异,但大佬给出的建议是:

end ~
边栏推荐
猜你喜欢
随机推荐
leetcode 48. Rotate Image 旋转图像(Medium)
Steady Development | Data and Insights on Mobile Game Players in Western Europe
"Distributed cloud best practices" BBS, on August 11, shenzhen
为什么买域名必须实名认证?这样做什么原因?
【商家联盟】云平台—异业联盟,打造线上线下商业相结合的系统
MySQL学习之运算符
谷粒商城笔记
域名哪家便宜?怎么买便宜域名?
response的contentType 几种类型
8年软件测试感悟,送给刚入测试行业的小伙伴
工龄10年的测试员从大厂“裸辞”后...
WEB 渗透之SSTI 模板注入
Visual Studio 2022创建项目没有CUDA模板的解决方法
手把手教你搭建一个Minecraft 服务器
葫芦娃解析
从云计算到函数计算
湖北移动HG680-LV_S905L3B_线刷固件包
码蹄集 - MT2165 - 小码哥的抽卡之旅1
移动海信IP102H_905L3-B_线刷固件包
开一个羽毛球馆大概需要多少钱?大约15万左右可以搞定!









