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谁更好用?的主要内容,如果未能解决你的问题,请参考以下文章