# Yarn 软件包管理器👍
# 介绍
Yarn 对你的代码来说是一个软件包管理器, 你可以通过它使用全世界开发者的代码,或者分享自己的代码给全世界的开发者。Yarn 做这些事情快捷、安全、可靠,所以你不用担心什么。
通过 Yarn 你可以使用其他开发者针对不同问题的解决方案,简化你开发软件的过程。 如果使用过程中遇到问题,你可以将其上报或者贡献解决方案。一旦问题被修复, 你可以使用 Yarn 更新。
代码通过 软件包(package) 的方式被共享。一个软件包里包含了所有需要共享的代码,以及一个描述软件包信息的文件 package.json
(叫做 清单)。
# 安装
# Homebrew
你可以通过 Homebrew 包管理工具 安装 Yarn。 如果你还未安装 Node.js,Homebrew 会自动为你安装。
brew install yarn
如果你用的是 nvm 或类似工具,你需要确保 PATH
变量中列出的 nvm 版本的路径在 Homebrew 安装的 Node.js 路径之前。
# 关于全局安装
在整个系统中使用单个包管理器一直是个问题。为了保持稳定,需要跨环境并使用相同的包管理器版本来执行安装操作,否则我们有可能在版本之间引入意外的重大风险 - 毕竟,这就是为什么首先引入了锁文件(lockfile)的概念!在某种意义上来说,由于 Yarn 是您的第一个项目依赖项,因此"锁定它"也是应该的。
因此,Yarn 2 及更高版本应按项目管理。别担心,改变很小!只需确保首先在全局安装 Yarn 二进制文件即可,我们将使用该二进制文件来生成本地的二进制文件:
npm install -g yarn
当你你遵循上述说明(从主目录下运行 yarn --version
命令将输出类似 1.22.0
的信息),请转到下一节,了解如何在项目中实际启用 Yarn 2。
你可能已经注意到全局安装的 Yarn 是属于 “经典版本” 序列(即 1.x)。这是刻意安排的!这一安排的一个额外好处是,为 Yarn 1 配置的项目将继续使用 Yarn 1,而无需突然强制迁移到 Yarn 2.x 的配置格式。如果 Yarn 一开始就被“项目锁定”了,我们就不必这样做了,毕竟是 事后诸葛 😉
# 按项目安装
- 全局安装 Yarn 的最新版本:
npm install -g yarn
- 进入你的项目目录:
cd ~/path/to/project
- 运行以下命令:
yarn set version berry
"Berry" 是 Yarn 2 发布序列的代号,同时也是我们的 代码仓库 的名称!
- 提交新增和修改过的文件。参见 哪些文件需要被添加到 .gitignore 配置文件中?
# 更新到最新版本
如果以后要将 Yarn 更新到最新版本,请运行:
yarn set version latest
Yarn 将从我们的网站下载最新的二进制文件,并将其安装在您的项目中。然后,不要忘记更新依赖项并提交更新结果!
# 安装 master 分支的最新构建版本(谨慎)
随着时间的推移,即使最新版本也不够新了,那么你可能希望尝试最新的 master 代码分支,以检查 Bug 是否已修复。这在 Yarn 2 中已经变得非常简单了!只需运行以下命令即可:
yarn set version from sources
同样的,还可以使用 --branch
参数来指定要安装特定的 PR:
yarn set version from sources --branch 1211
# Yarn 和 NPM 国内镜像(淘宝镜像)
查看当前镜像
yarn config get registry
设置为淘宝镜像
yarn config set registry https://registry.npm.taobao.org/
设置为官方镜像
yarn config set registry https://registry.yarnpkg.com
# 开始使用
现在你已经 安装了 Yarn,那就开始使用 Yarn 吧。以下列出的是一些最常用的命令。
从 Yarn 1 迁移到 Yarn 2
我们一直在编纂 迁移指南 为从 Yarn 1 迁移到 Yarn 2 提供有用的建议。请查看此指南,如果发现尚未涵盖的内容请反馈给我们!如果遇到问题,请查阅 PnP 兼容列表 并 开启 node-modules 插件!
# 显示命令列表
yarn help
# 初始化一个新项目
yarn init
# 安装所有依赖项
yarn
yarn install
# 添加依赖项
yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]
# 将依赖项添加到不同的依赖类别中
分别添加到 devDependencies
、peerDependencies
和 optionalDependencies
类别中:
yarn add [package] --dev # dev dependencies
yarn add [package] --peer # peer dependencies
# 更新依赖项
# v1
yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]
# v2
yarn up [package]
yarn up [package]@[version]
yarn up [package]@[tag]
# 删除依赖项
yarn remove [package]
# 更新 Yarn 本体
yarn set version latest
yarn set version from sources