未加星标

yarn, 不是又一个 npm 第三方客户端

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二03 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

前情提要: https:// code.facebook.com/posts /1840075619545360

仅仅一夜,却也是无数个日夜,FaceBook 开源了 yarn 这个新的 javascript 包管理工具,这个和 Exponent, Google, 以及 Tilde 合作完成的项目。

FaceBook 提供了一种看起来和 npm 无关的安装方式 (mac):

curl -o- -L https://yarnpkg.com/install.sh | bash

在其它平台也可以通过安装文件或者其它包管理系统安装,这样看起来不那么 npm-ish 的方式让我觉得这是有取代 npm 的想法的,虽然我们都爱 npm ;)

当然真正的原因不是这样,这只是因为如果你用 npm 安装 yarn 不就会产生 yarn 想解决的那些问题吗,比如速度、semantic versioning 的不足等等

那 yarn 解决了哪些 npm 的问题呢?yarn:

非常快,非常非常快

yarn 缓存了每次你下载的模块,所以同样模块同样的版本不会发送第二次下载请求,对于没有缓存的模块, yarn 也可以通过并行的网络请求最大限度利用网络资源。现在真的是没有什么几十秒安装不完的依赖的。一个 50 个依赖的 webpack + babel 项目可以在 20 秒左右安装完成。

安全

yarn 在开始安装一个包之前会先用 checksums 来验证,你不用担心本地的缓存的包被破坏了导致安装失败。

可靠

被一群喜欢喵星人的开发者维护,以及有 FaceBook 在 production 环境中使用。完善的测试和基于 flow type 的 code base。

以及很多令人感动的小改进

1. 有些 npm 包会抛出 warning 提示信息,在一起 npm install 的时候只有一个名字你完全不知道是哪个包的哪个包的哪个包抛出的这个信息,而 yarn 改善了这一点。


yarn, 不是又一个 npm 第三方客户端
2. `yarn ls` 会高亮出所有在 package.json 的 dependencies 里的依赖,增强可读性。

3. 每一条命令都会显示执行的时间。

4. 默认生成 lockfile . 保证 yarn 每次安装相同版本的依赖,npm shrinkwrap 会丧失掉同步性如果你忘了生成它。

5. `yarn why <name>` 这条命令可以告诉你为什么一个依赖会被安装到你的项目中。

6. ......countless...

Fork?

那么问题就来了,yarn 有许多令人激动的特性,但这些为什么不能通过改进 npm 的方式加入而是要重新开发一个客户端呢?

简言之, 兼容性。 这些改进在现在的 npm 中看起来就像是 breaking changes。

npm

有人开始担心 npm,有人甚至说出了终于可以死掉了, npm!其实 npm 在更早的时候已经参与了 yarn 项目,并且鼓励这一行为,因为对于 npm 这样大范围使用的系统来说直接做出这些可能带来兼容性问题的改进很难。(不要以为 npm 比你制杖)

This is how open source works.

本文数据库(综合)相关术语:系统安全软件

分页:12
转载请注明
本文标题:yarn, 不是又一个 npm 第三方客户端
本站链接:http://www.codesec.net/view/482755.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(29)