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

前言

这两天大家有没有都被Yarn悄悄刷了屏,最近Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm 。为了跟上 Javascript 这股潮 流的脚步,大概的浅尝了一下这个自称是又快又可信赖又安全的包管理,所以写的内容不会很详细,更多的可能只是针对这个全新的包管理与 npm 的不同之处来对比。也可能有些地方写得不对,如果有的话,欢迎指正。

一、安装

首先当然是安装啦。跟 npm 这种被钦点而随 nodejs 一起被安装的包管理器不同, Yarn 需要自行手动安装。这也可以理解吧,毕竟是全新的东西。不过老实说,安装体验是不太好的……吧。

为什么怎么说呢……因为我的开发环境是 Arch Linux ,而官方文档只提供了 apt-get 系 Linux 和 yum 系 Linux 的安装方式……

既然志在取代 npm ,那么肯定有全平台的兼容方案咯,果然有适用于所有发行版的手动安装脚本,于是我就尝试这个,可是装了三次没有一次成功,各种问题……

最后发现,其实 yarn 可以直接像装模块那样用 npm 装:

npm install -g yarn

一个要取代 npm 的东西,居然还要用 npm 来装? 好吧,不管怎么讲总之是这样装上了,所以我说安装体验一般般……也许可能对其他的发行版来说会好一些吧,可能对于一些大众的发行版和 macOS 来说,安装就是一条命令打进终端的事情。

虽然截止到我写这篇文章的时候,已经有了 Arch Linux 上的安装方式,不过是通过 yaourt(AUR) 的方式,不过我并不觉得对于新手来说手动装一下 yaourt 再装 yarn 比直接装 nodejs 然后 npm install 简单。也许在现阶段,相比什么 Debian/Ubuntu/CentOS 来说 Arch 还是个小众的发行版吧……

二、Dependencies Management

安装部分就这样告一段落。既然作为一个包管理,就要做好自己的职责。接下来就想要试试这个新包管理是否真的有它所宣传的那样神奇。接下来我在同样的环境下,将 yarn 和 npm 以及 cnpm 做对比。由于墙内的特殊环境,已将 npm 的 registry 更换为 https://registry.npm.taobao.org 。

FASTER

在对比之前,我觉得这个对比对 yarn 来说有些不公平,因为 npm 已经设置了国内的镜像,而截止此文章发布的时候 yarn 并没有国内镜像,所以并没有对 yarn 进行特殊的设置。我有些担心这样会不会对测试的结果造成误差。

Yarn 既然是 Facebook 家的东西,那我们就首先试一下安装他家的 React 好了:

首先当然是主角 yarn 啦。需要注意的是 yarn 安装依赖的方式不同于 npm ,你需要执行以下命令来安装依赖:

yarn add react
# same as npm install react

可以看到 yarn 安装 React 用了 13.3s ,这速度也着实令人满意。

接下来是 npm 。因为 npm 并不显示命令时间,所以我掐了一下秒表,大概 45s 的样子,是 yarn 的好几倍多。好像比起 npm 来说, yarn 的速度确实快了一些呢,而且 npm 用的还是国内的源。

不过 cnpm 的速度就更快了,只用了 4s 便完成了整个安装过程。但是毕竟 cnpm 是 npm 的衍生产物,处于情理之中。既然这东西可以改善 npm 的速度,谁知道以后会不会有 cyarn 呢?但是通过这个测试我们可以看出, yarn 的速度相比原生 npm 着实是一个质的飞跃,FASTER 并不是浪得虚名。

接下来我又尝试了安装其他的包,多次对比了一下, 平均下来 yarn 会比 npm 快上 3–6 倍(这是安装体积小一些的包的情况)。

RELIABLE/SECURE

至于这个包管理是否 reliable/secure ,这个我暂时没想到怎么测试。我只知道在我用的时候,偶尔有几率会报一些莫名其妙的错误,但是反复执行两遍命令,就又正常工作了。毕竟 yarn 是新出的东西嘛,可以理解。不过就在这一天之内,yarn 的 GitHub 项目主页已经赢得了 9K star,issues 和 pull request 也有了上千个,可见其火热的程度,所以对于它的前景,我还是很看好的。

Offline mode

Yarn 的一个亮点就是可以离线安装依赖,当然,前提是曾经安装过这个依赖。 Yarn 会缓存安装过的包,下次安装的时候如果指定了 -offline 参数, Yarn 就会直接从缓存中取出这个包,这样将大大缩短安装依赖的时间。

遗憾的是,尽管官方文档我看了一遍又一遍,这个功能还是无法正常在我的环境上工作。我会找一下原因,这一段稍后补充。

但是这个 feature 真的是让人眼前一亮,可以说解决了 npm 的一个短板,很致命的短板。有了这样的功能之后,以后在没有网络的环境下也能够安装已有的依赖的。而且省去了下载的时间,大大提高了效率。想象一下以后执行 react-native init 的时候不用漫长等待 15 分钟了,是不是很开心(当然,什么时候 Facebook 把 react-native init 的安装依赖过程换成自家的包管理安装还是未知数喔)。

yarn.lock 文件

Yarn 通过一个 yarn.lock 文件,来使得你的程序得以在不同的机器上获得一致的体验。虽然这个解释很牵强,好歹我没有机翻给大家看,已经很良心了(雾)。感觉这好像是个很高端的东西,其实主要是对 package.json 的一个补充。

有兴趣的话,可以看这里的详细介绍(需要英文好一些哟):

Yarn

Fast, reliable, and secure dependency management. yarnpkg.com

总结

有时候就是眼睛一睁一闭之间,一个新的东西就这样在你全然不知的时候悄然面世了。今天出了 yarn,明天指不定又会出现什么。庆幸的是,我们还能赶上这个新玩意的早班车。

但是必须要说 yarn 的出现确实是有进步意义的,他解决了 npm 已知的一些问题,拓展出了新的特性。既然如此,它就是值得去接触和学习的。尽管距离取代 npm 还有好长的一段时间,走好长的一段路,但是可以预见它的前途将是一片的光明。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作带来一定的帮助。

(0)

相关推荐

  • 利用yarn实现一个webpack+react种子

    一.初始化项目 首先确保你的node 版本 >=4.0.并且确保yarn可以正常工作,关于安装yarn,你可以看这里 我们先创建个空文件夹 比如yarn-react-webpack-seed,然后输入命令: yarn init yarn 如果没有安装,全程用 npm代替也没问题. 项目会初始化 package.json ,然后填写一些基本信息即可. 接下来我们开始安装依赖项,再 package.json 的添加下面内容 "dependencies": { "react&

  • JS新包管理工具yarn和npm的对比与使用入门

    这篇文章会通过以下几个方面介绍yarn的: yarn对比npm解决了什么问题,带来哪些便利. 获取yarn的正确姿势 yarn的使用入门(介绍一些常用的命令 个人使用心得 yarn对比npm的优点 根据官方文档yarn具有6大优点 1.离线模式 yarn会有一个缓存目录,会缓存以前安装过的软件包,再次安装时就不必从网络下载了,大大加速安装速度. 这一点很重要,npm 饱受诟病的一点就是,每次安装依赖,都需要从网络下载一大堆东西,而且是全部重新下载,工程多的时候比较烦人. 我司部署node项目,是

  • yarn与npm的命令行小结

    一.首先需要了解的命令 npm install === yarn -- install 安装是默认行为. npm install taco --save === yarn add taco -- taco 包立即被保存到 package.json 中. npm uninstall taco --save === yarn remove taco 在 npm 中,可以使用 npm config set save true 设置 - -save 为默认行为,但这对多数开发者而言并非显而易见的.在 y

  • Hadoop2.X/YARN环境搭建--CentOS7.0 JDK配置

    Hadoop是Java写的,他无法使用Linux预安装的OpenJDK,因此安装hadoop前需要先安装JDK(1.6以上) 原材料:在Oracle官网下载的32位JDK: 说明: 1.CentOS 7.0系统现在只有64位的,但是,Hadoop一般支持32位的,在64位环境下有事会有Warning出现,避免真的有神马问题,选择i586的JDK(即32位的),当然,64位的CentOS 7 肯定是兼容32位JDK的,记住:64位系统肯定兼容32位的软件,32位系统不能兼容64位软件.64位只是说

  • Yarn的安装与使用详细介绍

    在官方介绍里有这么一句话: Yarn is a package manager for your code. It allows you to use and share code with other developers from around the world. Yarn does this quickly, securely, and reliably so you don't ever have to worry. 关键意思就是,快速,安全,可靠.你下载的包将不再重新下载.而且确保在

  • 利用yarn代替npm管理前端项目模块依赖的方法详解

    本文主要给大家介绍了关于yarn代替npm管理前端项目模块依赖的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 什么是 yarn? 简单来说,yarn 是一个与 npm 功能相同的工具,用于前端项目的依赖管理.在使用 npm 的项目中,使用 npm 命令的地方都可以使用 yran 来代替. 为什么要使用 yarn 替代 npm 呢?yarn 相对 npm 来说,主要的特点有: 离线.并行安装:依赖并行安装,缓存已下载过的依赖并优先使用,各种优化使得安装依赖速度显著提升

  • Hadoop2.X/YARN环境搭建--CentOS7.0系统配置

    一.我缘何选择CentOS7.0 14年7月7日17:39:42发布了CentOS 7.0.1406正式版,我曾使用过多款Linux,对于Hadoop2.X/YARN的环境配置缘何选择CentOS7.0,其原因有: 1.界面采用RHEL7.0新的GNOME界面风,这可不是CentOS6.5/RHEL6.5所能比的!(当然,Fedora早就采用这种风格的了,但是现在的Fedora缺包已然不成样子了) 2.曾经,我也用了RHEL7.0,它最大的问题就是YUM没法用,而且总会有Warning提示注册购

  • yarn的使用与升级Node.js的方法详解

    前言 在官方介绍里有这么一句话: Yarn is a package manager for your code. It allows you to use and share code with other developers from around the world. Yarn does this quickly, securely, and reliably so you don't ever have to worry. 关键意思就是,快速,安全,可靠.你下载的包将不再重新下载.而且

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

    前言 这两天大家有没有都被Yarn悄悄刷了屏,最近Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .为了跟上 Javascript 这股潮 流的脚步,大概的浅尝了一下这个自称是又快又可信赖又安全的包管理,所以写的内容不会很详细,更多的可能只是针对这个全新的包管理与 npm 的不同之处来对比.也可能有些地方写得不对,如果有的话,欢迎指正. 一.安装 首先当然是安装啦.跟 npm 这种被钦点而随 nodejs 一起被安装的包管理器不同, Yarn 需要自行手动安装

  • Node.js包管理器npm的具体使用

    目录 目的 npm init 与 package.json文件 模块安装与管理 安装模块 查看已安装模块 更新模块 删除模块 npx 模块编译 版本控制 换源 使用 nrm 工具换源 使用 cnpm 代替 npm 总结 目的 目前的Node.js安装包中都带有一个重要的工具 包管理器npm .npm主要有两方面功能:下载管理第三方模块:构建与运行项目.npm使用本身并不复杂,但是在大陆的网络环境下使用并不省心,徒增许多工作量.这篇文章将对相关内容做个说明. npm init 与 package.

  • node.js包管理工具Yarn使用简介

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 , 它主要是为了弥补 npm 的一些缺陷而出现的.和npm相比,它具有如下特点: 速度快 : 主要来自以下两个方面: 并行安装:并行执行所有任务,提高了性能. 离线模式:如果之前已经安装过一个软件包,再次安装时直接从缓存中获取. 安装版本统一:每一次拉取同一个项目依赖时,使用的都是一样的模块版本. 更简洁的输出: Yarn结合了 emoji直观且直接地打印出必要的信息,也提供了一些

  • 一个简单的Node.js异步操作管理器分享

    最近写nodejs比较多,刚开始的时候碰到的异步的操作比较少,因为想做的东西比较简单,一查api有同步的,为了省事就直接用同步的搞了,慢慢发现这不是个事呀,好好的异步特性不用,非得用同步的,真囧,并且很多东西木有同步的api的. 好!写异步的,慢慢的出现了这种代码... 复制代码 代码如下: mysql.query('xxxx').on('success', function(){   mysql.query('xxxx').on('success', function(){        my

  • Node.js基础入门之模块与npm包管理器使用详解

    目录 require函数 模块分类 第三方模块 1. 安装第三方模块 2. 引入第三方模块 3. 示例测试 系统模块 require注意事项 exports导出对象 1. exports示例 2. exports注意事项 module模块对象 package.json包描述文件 1. 什么是package.json ? 2. 如何创建package.json文件? NPM基础 1. 常用npm命令 2. npm 示例 cnpm基础 1. 什么是cnpm ? 2. 使用cnpm 控制台输出 1.

  • Node.js安装教程和NPM包管理器使用详解

    2009年的JSCOnf大会上,一个叫Ryan Dahl的年轻程序员向人们展示了一个他正在做的项目,一个基于Google V8引擎的JavaScript运行平台,它提供了一套事件循环和低IO的应用程序编程接口(API).和其他的服务端平台不同, JavaScript天生就是事件驱动IO,而这个项目又大大降低了编写事件驱动应用程序的复杂度,因此它很快就以不可思议的速度的成长流行起来,并应用到实际项目中.(Jack:这段翻译的不太靠谱,原文:This project was not like oth

  • 在linux中使用包管理器安装node.js

    网上文章中,在linux下安装node.js都是使用源码编译,其实node的github上已经提供了各个系统下使用各自的包管理器(package manager)安装node.js的方法. 1. 在Ubuntu中,使用如下命令: 复制代码 代码如下: curl -sL https://deb.nodesource.com/setup | sudo bash - sudo apt-get install -y nodejs 如果需要使用npm安装本地组件,还需要执行如下命令: 复制代码 代码如下:

  • 使用pnpm包管理器替代npm及yarn的命令示例

    目录 前言 为什么会有 pnpm 不止于此 什么是扁平化的 node_modules pnpm 的 node_modules 如何使用 pnpm 安装 直接安装 通过 npm 安装 通过 HomeBrew 安装( 一种 MacOS 包管理器) 升级 使用 配置 命令 和其他包管理器比较 Monorepo 及 工作空间(Workspace) 什么是 Monorepo Workspace workspace: 协议 结语 前言 今天给大家介绍一种新的包管理器:pnpm,pnpm 由 zkochan

  • AERGO SHIP:用于开发智能合约的包管理器

    AERGO SHIP:用于开发智能合约的包管理器 用于构建.测试和部署分布式应用程序的客户端框架和开发环境 构建大型分布式应用程序是很困难的,因为对其进行测试,使其实现端到端工作,并进行部署是一个非常耗时的过程.通过AERGO,我们计划让一切变得与众不同. AERGO是一个为在实现基于区块链的系统和应用程序时面临众多独特挑战的企业提供解决方案的平台.为了提高开发.测试和部署智能合约的效率和易用性,我们创建了SHIP.SHIP是Lua智能合约包管理器.它将本地开发环境与Git和分布式分类账连接起来

  • Flutter 包管理器和资源管理使用学习

    目录 什么叫包管理器 Flutter 包管理器 Pub仓库 资源管理 配置图片资源 配置全局字体资源 结束语 什么叫包管理器 包管理器就是用来管理程序运行依赖的一个配置应用.在程序运行中,我们会用到各种各样的第三方程序包,若我们手动管理这些程序,他将变得十分臃肿.这时候便诞生了包管理器,类似于手机中的AppStore.比如说我们手机中的某个程序更新了,我们就可以通过AppStore来更新.同样的我们可以通过包管理来更新我们程序中用到的依赖包. Flutter 包管理器 Flutter包管理器是Y

随机推荐