Yarn 构建工具基础
npm是一个非常优秀全面且广受欢迎的包管理工具,yarn就是一个类似于npm的包管理工具,它是由facebook推出并开源。鉴于facebook在前端界的影响力,yarn一面世就很受瞩目,受到了前端界的广泛欢迎。
与npm相比,yarn主要的优势在于:速度快、离线模式、版本控制
一、为什么快
npm会等一个包完全安装完才跳到下一个包,但yarn会并行执行包,因此速度会快很多。
二、怎么个离线模式
安装过的包会被保存进缓存目录,以后安装就直接从缓存中复制过来,这样做的本质还是会提高安装下载的速度,避免不必要的网络请求。
三、版本控制
npm一个痛点是:当包的依赖层次比较深时,版本控制不够精确。会出现相同package.json,但不同人的电脑上安装出不同版本的依赖包,出现类似 “我电脑上是好的,没问题呀”的bug很难查找。你可以使用npm-shrinkwrap来实现版本固化,版本信息会写入npm-shrinkwrap.json文件中,但它毕竟不是npm的标准配置。
而yarn天生就能实现版本固化。会生成一个类似npm-shrinkwrap.json的yarn.lock文件,文件内会描述包自身的版本号,还会锁定所有它依赖的包的版本号:
![](https://img.haomeiwen.com/i3781695/4e941cfec668bb6d.png)
yarn.lock存储这你的每个包的确切依赖版本,能确保从本地开发到生产环境,所有机器上都有精确相同的依赖版本。
安装
通过Homebrew 包管理工具安装 Yarn
$ brew update
$ brew install yarn
设置路径
你需要设置你终端的 PATH 环境变量,以便全局访问 Yarn 的可执行文件。
添加 export PATH="$PATH:`yarn global bin`" 到你的 profile 文件(也可能是 .profile、.bashrc、.zshrc 等文件)。
测试一下 Yarn 是否能够正确运行:
$ yarn --version
使用
初始化一个新的项目
$ yarn init
添加一个依赖包
$ yarn add [package]
$ yarn add [package]@[version]
$ yarn add [package]@[tag]
更新一个依赖包
$ yarn upgrade [package]
$ yarn upgrade [package]@[version]
$ yarn upgrade [package]@[tag]
删除一个依赖包
$ yarn remove [package]
安装所有的依赖包
$ yarn / yarn install
实例
创建新项目
不论是已经有了现成的项目,还是正着手启动一个全新项目,你都可以使用同样的方法引入Yarn。
在命令行终端里,跳转到准备引入Yarn的目录(通常是一个项目的根目录),执行以下命令:
$ yarn init
![](https://img.haomeiwen.com/i3781695/775b78aa6d70088f.png)
一路Enter将使用默认配置,你也可以修改默认配置
执行完成后将生成package.json文件
![](https://img.haomeiwen.com/i3781695/79567d75c242ffc6.png)
管理依赖包
在使用一个包之前,你需要执行以下命令将其加入依赖项列表中:
$ yarn add package1
![](https://img.haomeiwen.com/i3781695/3d7301e221fd7d71.png)
你也可以使用以下命令添加特定的依赖包
$ yarn add package_name@[version]
$ yarn add package_name@[tag]
更新依赖包
$ yarn upgrade package1
或替他特定依赖包命令
$ yarn upgrade package_name@[version]
$ yarn upgrade package_name@[tag]
删除依赖包
$ yarn remove package1
![](https://img.haomeiwen.com/i3781695/edca70ab769cc660.png)
安装依赖包
如果你刚从github/coding上clone了一个项目,你需要yarn install 项目所有的依赖包。Yarn会从 package.json 中读取依赖,并将依赖信息存储到yarn.lock中。
其他安装命令
安装所有的包:yarn / yarn install
安装一个且只有一个版本的包: yarn install --flat
强制重新下载所有包:yarn install --force
只安装生产环境依赖:yarn install --production
网友评论