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文件里存储了项目的有关信息。 包括项目名称、维护者信息、代码托管地址,以及最重要的:项目依赖。

引用和引申

Yarn 入门的更多相关文章

  1. [Spark]Spark、Yarn 入门

    Spark在集群上的运行模式 链接: http://spark.apache.org/docs/latest/cluster-overview.html Component章节 总结: 1 Each ...

  2. (转载)从Java角度理解Angular之入门篇:npm, yarn, Angular CLI

    本系列从Java程序员的角度,带大家理解前端Angular框架. 本文是入门篇.笔者认为亲自动手写代码做实验,是最有效最扎实的学习途径,而搭建开发环境是学习一门新技术最需要先学会的技能,是入门的前提. ...

  3. Hadoop学习(3)-mapreduce快速入门加yarn的安装

    mapreduce是一个运算框架,让多台机器进行并行进行运算, 他把所有的计算都分为两个阶段,一个是map阶段,一个是reduce阶段 map阶段:读取hdfs中的文件,分给多个机器上的maptask ...

  4. Flink(一)【基础入门,Yarn、Local模式】

    目录 一.介绍 Spark | Flink 二.快速入门:WC案例 pom依赖 批处理 流处理 有界流 无界流(重要) 三.Yarn模式部署 安装 打包测试,命令行(无界流) Flink on Yar ...

  5. Node.js包管理器Yarn的入门介绍与安装

    FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱 ...

  6. Node入门教程(7)第五章:node 模块化(下) npm与yarn详解

    Node的包管理器 JavaScript缺少包结构的定义,而CommonJS定义了一系列的规范.而NPM的出现则是为了在CommonJS规范的基础上,实现解决包的安装卸载,依赖管理,版本管理等问题. ...

  7. Hadoop2-HDFS学习笔记之入门(不含YARN及MR的调度功能)

    架构 Hadoop整体由HDFS.YARN.MapReduce三大部分组成,推荐架构参考:https://www.cnblogs.com/zhjh256/p/10573684.html. 注:2.x的 ...

  8. 从Java角度理解Angular之入门篇:npm, yarn, Angular CLI

    本系列从Java程序员的角度,带大家理解前端Angular框架. 本文重点介绍Angular的开发.编译工具:npm, yarn, Angular CLI,它们就像Java在中的Maven,同时顺便介 ...

  9. yarn详细入门教程(转载)

    简介Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具.就像我们可以从官方文档了解那样,它的目的是解决这些团队使用 n ...

随机推荐

  1. 【读书笔记】iOS-方法声明

    编译的时候 ,编译器会把方法前面的IBAction替换成void,把属性前面的IBOutlet移除掉,因为这些都 只是Interface Builder的标志而已.这个IBAction方法会被UI控件 ...

  2. 转发:tomcat的acess_log打印post请求参数,分析日志

    转载自:https://blog.csdn.net/qq_30121245/article/details/52861935 1) 在项目中加入相应的包和类,加载那里无所谓,只要web.xml配置正确 ...

  3. MySQL主从及主主环境部署

    主从同步 主机环境 mysql的安装可以参考:https://www.cnblogs.com/brianzhu/p/8575243.htmlCentos7版本master:192.168.192.12 ...

  4. Linux 目录结构学习与简析 Part2

    linux目录结构学习与简析 by:授客 QQ:1033553122 ---------------接Part 1-------------- #1.查看CPU信息 #cat /proc/cpuinf ...

  5. off by null 实战

    前言 off by null 是一个比较有意思的技术 下面通过 hctf2018 的 heapstrom_zero 实战一波. 相关文件(exp, 题目)位于 https://gitee.com/ha ...

  6. 慕学在线网0.3_四个model

    1.四个model完整代码: # users/models.py from datetime import datetime from django.db import models from dja ...

  7. Appium初识

    一. Appium工作原理 基本工作流程如下: Appium提供了一套web服务,Appium起一个Server(4723端口),用于与脚本client通信. server接收web driver(即 ...

  8. React Refs

    React Refs React 支持一种非常特殊的属性 Ref ,你可以用来绑定到 render() 输出的任何组件上. 这个特殊的属性允许你引用 render() 返回的相应的支撑实例( back ...

  9. 7.1Python异常处理

    目录 目录 前言 (一)常见的异常 (二)异常的处理 ==1.异常的预防:== ==2.解决已经知道类型的异常== ==3.合并处理多个异常== ==4处理未知类型的异常== (三)with语句 目录 ...

  10. 薛兆丰吴军何帆曾鸣万维刚李笑来罗永浩等得到APP专栏作者的书23本

    最近看了何帆的<大局观>,是他在得到APP的专栏文章的精选.顺便整理以下最近两三年内看过的得到APP其他专栏与课程作者的得到精选文集和他们写过的其他的书共23本. 薛兆丰 4星|<薛 ...