yarn VS npm谁更好用?

Posted 大大大白话

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yarn VS npm谁更好用?相关的知识,希望对你有一定的参考价值。



如今欣欣向荣的前端圈可谓是百家争鸣,连包管理器都搞出两个来了,当然啦,我们不必每个都学,只需要选你喜欢的一个使用就行啦~

本文进行对比的是yarn0.27.5版本和npm5.3.0版本,都是截止本文写作日期最新的稳定版本了。首先通过create-react-app的依赖下载测试二者的首次下载,二次下载以及离线下载的速度,然后给出二者的常用命令。

yarn

首先我们下载最新版本的yarn 和npm。

// if you have installed npm
npm install npm -g

// get yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.listsudo apt-get update && sudo apt-get install yarn
npm install create-react-app

create-react-app democd demo/
rm -rf node_modules && rm yarn.lock

// first time install
yarn install 

// remove modules 
rm -rf node_modules 

// second time install
yarn install

// remove modules and yarn.lock
rm -rf node_modules && rm yarn.lock

// third time instalk
yarn install

三次下载测试的结果依次是12.35s, 5.54s, 13.40s。可以粗略的得出两个结论:

  • 二次下载的时间年大概是第一次的一般左右。

  • yarn.lock是加速下载的关键。

我们再来试一下离线下载,实际上如果你可以通过缓存达到离线下载的效果,但是,当我们要保持缓存清洁,同一个库只存在一个版本,那么当你要更新版本的时候,你就要做两件事:

  • yarn remove package

  • yarn cache clean && yarn add new-package

如果使用offline mode,为每一个项目都准备一个缓存目录,存放当前的所有包的压缩包。具体步骤如下:

cd PROJECT_DIR
yarn config set yarn-offline-mirror ./npm-packages-offline-cache
mv ~/.yarnrc ./

rm -rf node_modules && yarn.lock
yarn install

然后我们就可以看到在项目目录里的npm-packages-offline-cache目录就会有所有项目依赖的压缩包。

我们甚至可以将这个目录commit到git。让所有的项目成员都使用同一个版本的依并且节约时间。

npm

之前一直都是在用npm,写完这篇文章之后,我决定以后选择yarn,至于为什么看到最后就知道了。

我们用npm做同样的测试,首先是首次下载时间:

// first time install
rm -rf node_modules && rm -rf yarn.lock
npm install

// second time install
rm -rf node_modules
npm install

两次的下载时间分别是168s,12s。第一次下载这么长是因为我删除了缓存,但是可以猜测正常下载时间应该是第二次下载的两倍左右。 

command cheatsheet

经过上面的时间比较之后,我基本打算从npm迁移到yarn,所以最后,我们来总结一下yarn和npm的常用命令。

两者不太一样的命令

  • yarn == npm install 下载所有依赖。

  • yarn add package == npm install package@latest --save添加一个项目依赖包。

  • yarn add package --save-dev == npm install package --save-dev添加一个开发依赖包。

  • yarn remove package == npm uninstall package --save 移除一个项目依赖包。

  • yarn gloabl add package == npm install -g package下载一个全局包

两者一样的命令

npm init/link/publish/test/login/cache clean == yarn init/link/publish/test/login/cache clean

yarn有npm没有的命令

  • yarn why package 为什么这个依赖会被安装,实际上也就是看看哪些包依赖于它。

  • yarn upgrade-interactive 交互式的更新包。

  • 超快的下载速度。

  • 自动保存依赖版本和依赖。

  • 支持emoji表情。

总结

我选择yarn的最重要的原因是下载速度,其次是命令的简便性,当然用alias绑定简写之后这并不是个优势。本篇的目的不是贬低npm,而是希望两者都能互相学习,互相竞争,让javascript的包管理更加轻松愉快!

感谢阅读~

以上是关于yarn VS npm谁更好用?的主要内容,如果未能解决你的问题,请参考以下文章

Yarn: 一个新的JavaScript模块管理器

Yarn vs npm: 你需要知道的一切

yarn vs npm

yarn代替npm yarn的优点与官网

npm 还是 yarn ?

安装js包管理工具(node.jsyarm)及代码编辑工具(vs code)