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. Tensorflow高效读取数据

    关于Tensorflow读取数据,官网给出了三种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据. 从文件读取数据: 在TensorFlow ...

  2. Loadrunner 运行场景-场景中的全局变量与关联结果参数

    运行场景-场景中的全局变量与关联结果参数   by:授客 QQ:1033553122 A.   全局变量 实验1: globals.h #ifndef _GLOBALS_H #define _GLOB ...

  3. Python 会是我们的未来吗?

    Python 热度激增 根据 Stack Overflow 的一项调查显示,Python 不仅在专业领域的使用率得到增长,在普通开发上的使用率也有所提升,有 40% 的受访者表示他们现在正在使用 Py ...

  4. 【Java入门提高篇】Day21 Java容器类详解(四)ArrayList源码分析

    今天要介绍的是List接口中最常用的实现类——ArrayList,本篇的源码分析基于JDK8,如果有不一致的地方,可先切换到JDK8后再进行操作. 本篇的内容主要包括这几块: 1.源码结构介绍 2.源 ...

  5. [20171124]手工使用Seed_Database.dfb和Seed_Database.ctl建库.txt

    [20171124]手工使用Seed_Database.dfb和Seed_Database.ctl建库.txt --//昨天看yueli34的帖子,链接http://www.itpub.net/thr ...

  6. Hive-1.2.1_04_DML操作

    Hive官方文档:Home-UserDocumentation Hive DML官方文档:LanguageManual DML 参考文章:Hive 用户指南 1. Loading files into ...

  7. 八皇后问题的Python实现和C#实现

    看到八皇后问题的解决思路, 感觉很喜欢. 我用C#实现的版本之前贴在了百度百科上(https://baike.baidu.com/item/%E5%85%AB%E7%9A%87%E5%90%8E%E9 ...

  8. 【Beta阶段】测试报告

    兼容性测试   功能 描述 效果 Chrome浏览器 FireFox浏览器 IE浏览器 搜狗浏览器 主页实用小工具按钮 跳转到实用小工具首页 跳转到实用小工具首页 ü ü ü ü 鼠标移动到逐差法计算 ...

  9. python windows环境下文档备份

    #python 2.7 #Filename:backup.py import os import time source = [r'C:\Users\zeng.shufang\Desktop\mess ...

  10. Reflection 反射

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/A__17/article/details/30571923 1.概念:所谓的反射.能够理解为在运行时 ...