增强版npm包管理工具--yarn

参考 http://www.jb51.net/article/95199.htm

官方文档:https://yarnpkg.com/en/docs/cli/

最近新出的JavaScript包管理工具yarn大家已经有所耳闻,
并已通过npm i -g yarn进行了安装,
现在想知道怎么样使用吗?如果你了解 npm,你已经会很大一部分啦!
下面是这篇文章从npm切换到yarn的一些简洁笔记。

yarn add: add a package to use in your current package.
yarn init: initialize for the development of a package.
yarn install: install all dependencies defined in a package.json file.
yarn publish: publish a package to a package manager.
yarn remove: remove a package that will no longer be used in your current package.

仅仅一夜,却也是无数个日夜,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 改善了这一点。

  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.

一、首先需要了解的命令
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 为默认行为,但这对多数开发者而言并非显而易见的。在 yarn 中,在package.json 中添加(add)和移除(remove)等行为是默认的。
npm install taco –save-dev === yarn add taco –dev
npm update –save === yarn upgrade
update(更新) vs upgrade(升级), 赞!upgrade 才是实际做的事!版本号提升时,发生的正是upgrade!
注意: npm update –save 在版本 3.11 中似乎有点问题。
npm install taco@latest –save === yarn add taco
npm install taco –global === yarn global add taco —— 一如既往,请谨慎使用 global 标记。
二、已知悉的命令
包和 npm registry 上是一样的。大致而言,Yarn 只是一个新的安装工具,npm 结构和 registry 还是一样的。
npm init === yarn init
npm link === yarn link
npm outdated === yarn outdated
npm publish === yarn publish
npm run === yarn run
npm cache clean === yarn cache clean
npm login === yarn login (logout 同理)
npm test === yarn test
三、Yarn 独有的命令
我跳过了一些提醒我们不要使用的内容,如 yarn clean。
yarn licenses ls —— 允许你检查依赖的许可信息。
yarn licenses generate —— 自动创建依赖免责声明 license。
yarn why taco —— 检查为什么会安装 taco,详细列出依赖它的其他包(鸣谢 Olivier Combe)。
Emojis
速度
通过 yarn lockfile 自动实现 shrinkwrap 功能
以安全为中心的设计
四、Npm 独有的命令
npm xmas === NO EQUIVALENT
npm visnup === NO EQUIVALENT
总结
在写这篇文章的时候发现, yarn的run 命令似乎出了点问题,应该会在0.15.2中修复。在这一点上, npm 好多了。

坚持原创技术分享,您的支持将鼓励我继续创作!