yarn -- 新型包管理器

node 包管理器

随着nodejs的出现,另外两个东西也进入了前端大众的视野–CommonJS规范node 包管理器

说到node 包管理器,就不得不提npm,毕竟是官方标配,安装了node就自带了npmnpm + nodejs,构成了一个宏伟了前端世界。 当然,出于各种原因,市面上还存在着各种包管理器,比较著名的端资源包管理器 – ‘bower’; 镜像为主的cnpmtnpm; 工具提供的rnpmspm; 还有很多其他的(我也没用过):jamjscomponent

今天,想向大家介绍的是yarn– 2016.10.11 Facebook 正式发布的 javascript 包管理器, 用来替代npm。 我在一次偶然的升级react native的时候,接触了yarn(react native已经将自家的yarn融入安装环境中)。 一遍文章《Yarn: A new package manager for JavaScript》讲述了yarn的诞生历程。

简介

yarn 是Facebook与 Exponent、 Google 和 Tilde 进行合作,开源的 JavaScript 包管理器。 旨在针对npm使用过程中的一些问题,提供更好的包管理方式,同时兼容 npmbower 工作流。

特点

npm的问题

  • 安装依赖包不稳定。 不同平台、不同用户、不同次安装的依赖可能不一样(因为npm的依赖安装顺序具有不确定性)。
  • 安装耗时过长。 npm在安装包的时候,采取队列式安装:只有前一个包安装完,才会安装下一个包。一个包失败,安装任务结束。
  • 安全性(这方面认识不是很深刻)

yarn的亮点

  • 稳定的依赖分析。 yarn会自动生成一个yarn.lock文件,记录包版本,把安装的软件包版本锁定在某个特定版本,并保证所有机器安装结果一样;对于不匹配的依赖版本的包创立一个独立的包,避免创建重复的
  • 急速安装。 yarn采用了新的算法来保证速度;同步执行所有任务;一个包安装失败的时候,会自动重试;对于已经安装过的包,会做全局缓存,避免重复下载(可实现离线安装)。
  • 安全性。 下载前会检查签名和包完整性
  • 同时,yarn还优化了cli信息输出,命令行简介语义化等。

安装过程

借用译文《Facebook 发布了新的 Node 模块管理器 Yarn,或取代 npm 客户端》

1、 处理: Yarn 通过向代码仓库发送请求,并递归查找每个依赖项,从而解决依赖关系。 2、 抓取: 接下来,Yarn 会查找全局的缓存目录,检查所需的软件包是否已被下载。如果没有,Yarn 会抓取对应的压缩包,并放置在全局的缓存目录中,因此 Yarn 支持离线安装,同一个安装包不需要下载多次。依赖也可以通过 tarball 的压缩形式放置在源码控制系统中,以支持完整的离线安装。 3、生成: 最后,Yarn 从全局缓存中把需要用到的所有文件复制到本地的 node_modules 目录中。

安装使用

yarn保持现有的工作流成特性,使用npm仓库。 所以基本是无代价兼容现有前端项目的,可以放心使用。

安装

npm install -g yarn

是的,使用npm安装哈,简单便捷,和和气气。

可以配置一下国内仓库 常用的淘宝镜像

yarn config set registry https://registry.npm.taobao.org

厂内的tnpm镜像

yarn config set registry http://r.tnpm.oa.com

命令行

yarn的命令行功能基本与npm处于对等状态。

常用命令行对比:

初始化

yarn init // npm init

安装全部依赖

yarn // npm install

安装某个依赖

yarn add react        // npm install react --save
yarn remove react     // npm uninstall react --save
yarn add react --dev  // npm install react --save-dev
yarn global add react // npm install react -g

更新依赖

yarn upgrade react    // npm update react --save

运行

yarn run start        //npm run start

end

yarn才刚刚起步,截致博文时间的时候,版本是0.17.6,github issues也有很多反馈(目前我还不知道有什么bugs)。 但是,yarn确实受到很多人的关注和期待。 我也好好好好期待。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA高级架构

大型网站技术架构

早期的网站为了节省成本一般会设计成集中式系统,应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展,逐渐出现瓶颈,按一定原则**(应用拆分、服务拆分...

39160
来自专栏文渊之博

迁移数据库数据到SQL Server 2017

概述 本篇我们将利用DMA一步一步实现SQL Server 的迁移。帮助大家理解现在的SQL Server与新版本的融合问题,同时需要我们做哪些操作来实现新版本...

63460
来自专栏Hadoop数据仓库

HAWQ技术解析(四) —— 启动停止

        前面已经完成了HAWQ的安装部署,也了解了HAWQ的系统架构与主要组件,下面开始使用它。HAWQ作为Hadoop上的一个服务提供给用户,与其它所...

297100
来自专栏Java架构沉思录

缓存在高并发场景下的常见问题

当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。这就比较依赖缓存的过期和更新策...

15840
来自专栏架构师小秘圈

高并发场景下缓存的常见问题

作者介绍: 丁浪,非著名架构师。关注高并发、高可用的架构设计,对系统服务化、分库分表、性能调优等方面有深入研究和丰富实践经验。热衷于技术研究和分享。 声明:版权...

45370
来自专栏顶级程序员

千万千万不要运行的 Linux 命令

来源:Linux 中国 https://linux.cn/article-401-1.html 文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,除非你是...

37180
来自专栏blackheart的专栏

[解读REST] 4.基于网络应用的架构风格

衔接上文[解读REST] 3.基于网络应用的架构,上文介绍了一组自洽的术语来描述和解释软件架构;如何利用架构属性评估一个架构风格;以及对于基于网络的应用架构来说...

19450
来自专栏IT大咖说

分布式内存数据库新架构,极速OLTP应用新利器

内容来源:2018 年 11 月 10 日,Oracle 数据库首席产品经理杨琳在“2018 SOUG年度数据库技术峰会”进行《Oracle TimesTen ...

25220
来自专栏ThoughtWorks

大型项目程序配置管理演化之路|TW洞见

今日洞见 文章作者、图片来自ThoughtWorks:窦衍森。封面图片来自网络。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司...

34960
来自专栏Java后端技术栈

大型网站技术架构总结一二

早期的网站为了节省成本一般会设计成集中式系统,应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展,逐渐出现瓶颈,按一定原则**(应用拆分、服务拆分...

14620

扫码关注云+社区

领取腾讯云代金券