Facebook的yarn包管理器

Yarn是一个新的包管理器,替换npm或其它包管理器的现有工作流程,并保持与npm 的`registry`兼容。 它具有与现有工作流程相同的功能集,同时操作速度更快,更安全,更可靠, Facebook为了解决包的依赖重复安装的问题而开发,因为在npm每个包的依赖会被重复的安装,还有就是在项目持续集成时

2 min read
By myfreax
Facebook的yarn包管理器

Yarn是一个新的包管理器,替换npm或其它包管理器的现有工作流程,并保持与npm 的registry兼容。 它具有与现有工作流程相同的功能集,同时操作速度更快,更安全,更可靠

Facebook为了解决包的依赖重复安装的问题而开发,因为在npm每个包的依赖会被重复的安装,还有就是在项目持续集成时,facebook由于安全的考虑在采用离线的沙盒环境进行构建,因此要求包管理器必须支持离线安装。

Yarn的架构

Yarn解决依赖包的重复是通过使用文件锁和可靠的安装算法来解决版本控制和非确定性方面的问题,文件锁的作用是将已安装的依赖关系锁定到文件中,并确保安装在所有计算机上的node_modules中产生完全相同的文件

安装包的过程可分为三步:

解释: Yarn通过发起请求到registry并递归的解释每个包的依赖

获取: 接下来,Yarn在全局缓存目录查找包是否已经被下载过,如果不存在,Yarn获取包和依赖并放到全局缓存目录中,用于离线安装,依赖也可以放在源控制中作为包离线安装

连接: 最后Yarn从全局缓存中复制所需的文件到本地node_modules目录中

开始使用Yarn

安装Yarn

Debian/Ubuntu Linux

➜  curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
➜  echo "deb http://dl.yarnpkg.com/debian/ stable main" | \
   sudo tee /etc/apt/sources.list.d/yarn.list
➜  sudo apt-get update && sudo apt-get install yarn

CentOS / Fedora / RHEL

➜  sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
➜  sudo yum install yarn

设置Yarn的registry为淘宝镜像

➜  yarn config set registry 'https://registry.npm.taobao.org'

Yarn兼容npm,包括registry

Link

FacebookCode

Yarn Documentation