当前位置:   article > 正文

Yarn 构建工具入门基础_yarn export

yarn export

一、yarn的背景和介绍

一直以来,我们在安装和管理依赖的时候基本上都会使用npm,npm是一个非常优秀全面且广受欢迎的包管理工具,它奠定了前端模块化开发的基石,为前端的发展做出了不可磨灭的贡献。

yarn就是一个类似于npm的包管理工具,它是由facebook推出并开源。鉴于facebook在前端界的影响力,yarn一面世就很受瞩目,受到了前端界的广泛欢迎。

与npm相比,yarn有着众多的优势,主要的优势在于:速度快,离线模式,版本控制。

1、速度快。

npm会等一个包完全安装完才跳到下一个包,但yarn会并行执行包,因此速度会快很多。网上有不少比较npm和yarn安装同样多依赖的执行速度,yarn在速度方面优势明显。实际项目中体验一下真是飞一样的速度,谁有试过谁知道~

2、离线模式,

离线的原理比较简单,安装过的包会被保存进缓存目录,以后安装就直接从缓存中复制过来,这样做的本质还是会提高安装下载的速度,避免不必要的网络请求。

3、版本控制

npm用下来比较强的一个痛点就是:当包 的依赖层次比较深时,版本控制不够精确。会出现相同package.json,但不同人的电脑上安装出不同版本的依赖包,出现类似 “我电脑上是好的,没问题呀”的bug很难查找。你可以使用npm-shrinkwrap来实现版本固化,版本信息会写入npm-shrinkwrap.json文件中,但它毕竟不是npm的标准配置。
而yarn天生就能实现版本固化。会生成一个类似npm-shrinkwrap.json的yarn.lock文件,文件内会描述包自身的版本号,还会锁定所有它依赖的包的版本号:


yarn.lock存储这你的每个包的确切依赖版本,能确保从本地开发到生产环境,所有机器上都有精确相同的依赖版本。


 

 

二、yarn的安装、用法和基本工作流

1、安装(以mac为例)

Homebrew

你可以通过 Homebrew 包管理工具安装 Yarn。 如果你还未安装 Node.js,Homebrew 会自动为你安装。

  1. brew update
  2. brew install yarn

设置路径

你需要设置你终端的 PATH 环境变量,以便全局访问 Yarn 的可执行文件。
添加`export PATH="$PATH:`yarn global bin`"`到你的 profile 文件(也可能是 .profile.bashrc.zshrc 等文件)。

 

2、用法

初始化一个新的项目

yarn init 

添加一个依赖包

  1. yarn add [package]
  2. yarn add [package]@[version]
  3. yarn add [package]@[tag]

更新一个依赖包

  1. yarn upgrade [package]
  2. yarn upgrade [package]@[version]
  3. yarn upgrade [package]@[tag]

删除一个依赖包

yarn remove [package]

安装所有的依赖包

yarn

or

yarn install

 

3、工作流

对于依赖管理来说,在项目中使用一个新的包管理器就是使用了一个新的工作流。 Yarn 将尽其最大的努力不侵入你的工作方式,并且使其工作流中的每一步都能简单易懂。

您需要知道一些基本的工作流的知识:

创建一个新的项目
添加/更新/删除依赖包
安装/重新安装依赖包
使用版本管理工具(例如 git)
持续集成

(1)、创建一个新项目

不论是已经有了现成的代码仓库(目录),还是正着手启动一个全新项目,你都可以使用同样的方法引入Yarn。
在命令行终端里,跳转到准备引入Yarn的目录(通常是一个项目的根目录),执行以下命令:

  1. yarn init

这将打开一个用于创建Yarn项目的交互式表单,其中包含以下问题:

  1. name (your-project):
  2. version (1.0.0):
  3. description:
  4. entry point (index.js):
  5. git repository:
  6. author:
  7. license (MIT):

你既可以回答这些问题,也可以直接敲回车键(enter/return)使用默认配置或者留空。

现在应该创建了一个和下面文件内容类似的 package.json

  1. {
  2. "name": "my-new-project",
  3. "version": "1.0.0",
  4. "description": "My New Project description.",
  5. "main": "index.js",
  6. "repository": {
  7. "url": "https://example.com/your-username/my-new-project",
  8. "type": "git"
  9. },
  10. "author": "Your Name <you@example.com>",
  11. "license": "MIT"
  12. }

执行yarn init之后,除了以上文件被创建之外,没有任何副作用。你可以随意编辑此文件。
package.json文件里存储了项目的有关信息。 包括项目名称、维护者信息、代码托管地址,以及最重要的:项目依赖。
 

(2)、管理依赖项

你需要了解几若干个用于增加、更新、删除依赖项的命令。
每个命令都会更新package.jsonyarn.lock 文件。

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

yarn add [package]

[package]会被加入到package.json文件中的依赖列表,同时yarn.lock也会被更新。

  1. {
  2. "name": "my-package",
  3. "dependencies": {
  4. + "package-1": "^1.0.0"
  5. }
  6. }

你可以用以下参数添加其它类型的依赖:

  • yarn add --dev 添加到 devDependencies
  • yarn add --peer 添加到 peerDependencies
  • yarn add --optional 添加到 optionalDependencies
    通过指定依赖版本标签,你可以安装一个特定版本的包:
  1. yarn add [package]@[version]
  2. yarn add [package]@[tag]

[version][tag] 会被添加到 package.json,并在安装依赖时被解析。
例如:

  1. yarn add package-1@1.2.3
  2. yarn add package-2@^1.0.0
  3. yarn add package-3@beta
  1. {
  2. "dependencies": {
  3. "package-1": "1.2.3",
  4. "package-2": "^1.0.0",
  5. "package-3": "beta"
  6. }
  7. }



更新依赖包

  1. yarn upgrade [package]
  2. yarn upgrade [package]@[version]
  3. yarn upgrade [package]@[tag]

这会更新package.jsonyarn.lock 文件。

  1. {
  2. "name": "my-package",
  3. "dependencies": {
  4. - "package-1": "^1.0.0"
  5. + "package-1": "^2.0.0"
  6. }
  7. }

删除依赖包

yarn remove [package]

这会更新package.jsonyarn.lock 文件。

 

(3)、安装依赖项

如果刚从版本控制系统里 checkout 一个包,则需要为其安装依赖。

如果是为现有的包增加依赖,那么这些新的依赖会自动安装。

yarn install 是用于安装一个项目的所有依赖。 Yarn会从package.json中读取依赖,并将依赖信息存储到yarn.lock中。

如果你正在开发一个包,通常你会在以下情况之后进行依赖安装:

  1. 你刚检出需要这些依赖项的项目代码。
  2. 项目的另一个开发者添加了新的依赖,你需要用到。

安装选项
有很多参数可以控制依赖安装的过程,包括:

  1. 安装所有依赖:yarnyarn install
  2. 安装一个包的单一版本:yarn install --flat
  3. 强制重新下载所有包:yarn install --force
  4. 只安装生产环境依赖:yarn install --production

您可以传递给 yarn install完整参数列表
 

(4)、配合版本控制

为了使其他人能够使用你的包,或者能够对其进行后续开发,你需要确保将所有必须的文件提交到你所使用的版本控制系统。

为了别人能使用你的包,以下文件必须被提交进版本控制系统:

  • package.json:包含包的所有依赖信息;
  • yarn.lock:记录每一个依赖项的确切版本信息;
  • 包实现功能的实际项目代码。



作者:伯纳乌的追风少年
链接:https://www.jianshu.com/p/f1d96bdc545b
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/741660
推荐阅读
相关标签
  

闽ICP备14008679号