Yarn 构建工具基础

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文件,文件内会描述包自身的版本号,还会锁定所有它依赖的包的版本号:

3781695-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

3781695-775b78aa6d70088f.png

一路Enter将使用默认配置,你也可以修改默认配置

执行完成后将生成package.json文件

3781695-79567d75c242ffc6.png

管理依赖包

在使用一个包之前,你需要执行以下命令将其加入依赖项列表中:

$ yarn add package1

3781695-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

3781695-edca70ab769cc660.png

安装依赖包

如果你刚从github/coding上clone了一个项目,你需要yarn install 项目所有的依赖包。Yarn会从 package.json 中读取依赖,并将依赖信息存储到yarn.lock中。

其他安装命令

安装所有的包:yarn / yarn install

安装一个且只有一个版本的包: yarn install --flat

强制重新下载所有包:yarn install --force

只安装生产环境依赖:yarn install --production

猜你喜欢

转载自blog.csdn.net/weixin_34402408/article/details/87230994