Yarn 入门

Yarn 是快速、可靠、安全的 js 包管理器。 关键词: nodejs, 包管理, yarn

简介

Yarn 是快速、可靠、安全的 js 包管理器。

  • 快速 - Yarn 会缓存它下载的每个包,所以无需重复下载。它还能并行化操作以最大化资源利用率,安装速度之快前所未有。
  • 安全 - Yarn 会在每个安装包被执行前校验其完整性。
  • 可靠 - Yarn 使用格式详尽而又简洁的 lockfile 文件和确定性算法来安装依赖,能够保证在一个系统上的运行的安装过程也会以同样的方式运行在其他系统上。

安装

先决条件:已安装 Nodejs。

执行命令:npm i -g yarn

虽然还有其他安装方式,但并不推荐。

Yarn 工作流

Yarn 工作流:

  1. 创建一个新项目
  2. 增加/更新/删除依赖
  3. 安装/重装你的依赖
  4. 引入版本控制系统(例如 git)
  5. 持续集成

Yarn 常用命令

每个命令都会更新 package.jsonyarn.lock 文件。

初始化新项目

yarn init

添加依赖包

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

yarn add [package]

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

  {
    "name": "my-package",
    "dependencies": {
+     "package-1": "^1.0.0"
    }
  }

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

  • yarn add --dev 添加到 devDependencies
  • yarn add --peer 添加到 peerDependencies
  • yarn add --optional 添加到 optionalDependencies

通过指定依赖版本标签,你可以安装一个特定版本的包:

yarn add [package]@[version]
yarn add [package]@[tag]

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

例如:

yarn add package-1@1.2.3
yarn add package-2@^1.0.0
yarn add package-3@beta
{
  "dependencies": {
    "package-1": "1.2.3",
    "package-2": "^1.0.0",
    "package-3": "beta"
  }
}

将依赖项添加到不同依赖项类别

分别添加到 devDependenciespeerDependenciesoptionalDependencies

yarn add [package] --dev
yarn add [package] --peer
yarn add [package] --optional

更新依赖包

yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]

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

  {
    "name": "my-package",
    "dependencies": {
-     "package-1": "^1.0.0"
+     "package-1": "^2.0.0"
    }
  }

删除依赖包

yarn remove [package]

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

安装依赖项

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

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

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

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

  • 安装所有依赖 - yarn 或 yarn install
  • 安装一个包的单一版本 - yarn install --flat
  • 强制重新下载所有包 - yarn install --force
  • 只安装生产环境依赖 - yarn install --production

参考:yarn install完整参数列表

创建一个新项目

不论是已经有了现成的代码仓库(目录),还是正着手启动一个全新项目,你都可以使用同样的方法引入 Yarn。

在命令行终端里,跳转到准备引入 Yarn 的目录(通常是一个项目的根目录),执行以下命令:

yarn init

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

name (your-project):
version (1.0.0):
description:
entry point (index.js):
git repository:
author:
license (MIT):

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

配置文件

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

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

请参阅Yarn Example Package项目,查看一个可用的 Yarn 包所需的最少文件配置。

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

{
  "name": "my-new-project",
  "version": "1.0.0",
  "description": "My New Project description.",
  "main": "index.js",
  "repository": {
    "url": "https://example.com/your-username/my-new-project",
    "type": "git"
  },
  "author": "Your Name <you@example.com>",
  "license": "MIT"
}

执行yarn init之后,除了以上文件被创建之外,没有任何副作用。你可以随意编辑此文件。

package.json文件里存储了项目的有关信息。 包括项目名称、维护者信息、代码托管地址,以及最重要的:项目依赖。

引用和引申

? 欢迎阅读 我的前端技术教程系列:frontend-tutorial

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我是攻城师

Apache Pig入门学习文档(一)

3865
来自专栏祝威廉

MLSQL是如何集成TensorFlow Cluster的

我们知道MLSQL支持SKLearn,TF等流行的算法框架,不过虽然支持了多个实例同时运行,但其实每个模型都需要跑全部数据。有的时候数据太大,确实是个问题,所以...

691
来自专栏编程坑太多

跟我一起学docker(16)--单节点mesos集群

1663
来自专栏刘远的专栏

airflow—服务失效监控(5)

因为DAG文件会在调度器和worker执行时加载,如果在DAG中引用了第三方的库或进行了DB操作,则这些操作会在DAG文件加载时被频繁调用。举个例子,如果升级了...

2243
来自专栏Hadoop实操

CDSW1.4的新功能

1893
来自专栏Spark学习技巧

Spark调优系列之硬件要求

估计所有的spark开发者都很关心spark的硬件要求。恰当的硬件配置需要具体情况具体分析,浪尖在这里给出以下建议。 一,存储系统 因为因为大多数Spark工作...

2408
来自专栏伦少的博客

Spark Streaming连接Kafka入门教程

转载请务必注明原创地址为:https://dongkelun.com/2018/05/17/sparkKafka/

53510
来自专栏Hadoop实操

如何使用HiBench进行基准测试

9663
来自专栏数据派THU

独家 | 一文读懂Hadoop(二)HDFS(上)

随着全球经济的不断发展,大数据时代早已悄悄到来,而Hadoop又是大数据环境的基础,想入门大数据行业首先需要了解Hadoop的知识。2017年年初apache发...

5599
来自专栏Hadoop实操

如何为Hive CLI运行时指定日志目录

在使用Hive CLI客户端执行SQL语句时,默认的日志输出在/tmp/${user}/目录下,由于tmp目录的空间大小有限,需要为Hive CLI客户端指定日...

2915

扫码关注云+社区

领取腾讯云代金券