yarn介绍
Yarn 是2016年由 Facebook 、Google、Exponent 、Tilde 联合推出的一个新的 Javascript 包管理工具,它的出现主要是为了弥补 npm 的一些缺陷。
官网上介绍了 Yarn 的一些优势,例如 :
- 速度超快:Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化-- 资源利用率,因此安装速度更快。
- 超级安全:在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。
- 超级可靠:使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。
安装yarn
前提:安装Node.js,具备npm环境
通过 npm 安装yarn
npm install --global yarn
运行命令来测试 Yarn 是否安装成功
yarn -v
或
yarn --version
yarn常用命令
每个管理包依赖的命令都会更新package.json和yarn.lock 文件
初始化新项目
yarn init
这将打开一个用于创建Yarn项目的交互式表单,其中包含以下问题:
name (your-project):
version (1.0.0):
description:
entry point (index.js):
git repository:
author:
license (MIT):
你既可以回答这些问题,也可以直接敲回车键(enter/return)使用默认配置或者留空。
执行yarn init之后,package.json文件会被创建,没有任何副作用,你可以随意编辑此文件。
yarn init —yes/-y
这个命令跳过上面提到的交互式会话,并生成一个基于你的默认值的 package.json
package.json文件里存储了项目的有关信息。 包括项目名称、维护者信息、代码托管地址,以及最重要的:项目依赖。
添加依赖包
yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]
将依赖项添加到不同依赖项类别
分别添加到 devDependencies、peerDependencies 和 optionalDependencies:
yarn add [package] --dev
yarn add [package] --peer
yarn add [package] --optional
升级依赖包
yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]
移除依赖包
yarn remove [package]
安装项目的全部依赖
如果你正在开发一个包,通常你会在以下情况之后进行依赖安装:
- 你刚检出需要这些依赖项的项目代码。
- 项目的另一个开发者添加了新的依赖,你需要用到。
yarn
或者
yarn install
安装选项
有很多参数可以控制依赖安装的过程,包括:
- 安装所有依赖:yarn 或 yarn install
- 安装一个包的单一版本:yarn install —flat
- 强制重新下载所有包:yarn install —force
- 只安装生产环境依赖:yarn install —production
yarn run
运行一个定义好的包脚本。
你可以在你的 package.json 文件中定义 scripts。
{
"name": "my-package",
"scripts": {
"build": "babel src -d lib",
"test": "jest"
}
}
yarn run [script] [< args>]
如果你已经在你的包里定义了 scripts,这个命令会运行指定的 [script]。例如:
yarn run test
运行这个命令会执行你的 package.json 里名为 “test” 的脚本
您可以在脚本名称后放置要传递给您的脚本的额外参数。
yarn run test -o --watch
运行这个命令会执行 jest -o —watch。
[script] 也可以是任何 node_modules/.bin/ 里本地安装的可执行程序。
也可以在该命令中忽略 run,每个脚本都可以用其名字执行:
yarn test -o --watch
yarn.lock注意
yarn.lock 文件是自动产生的,而且应该完全被 Yarn 管理。
当你用 Yarn CLI 增加/升级/删除依赖,它将自动更新你的 yarn.lock 文件。
不要直接编辑这个文件,那样很容易弄坏某些东西。
代码版本控制注意
为了别人能使用你的包,以下文件必须被提交进版本控制系统:
- package.json:包含包的所有依赖信息;
- yarn.lock:记录每一个依赖项的确切版本信息;
- 包实现功能的实际项目代码。