原文出处: yarn-vs-npm
真的太快了,每次yarn install,都会为我节省出好几分钟的时间。node
Yarn会保证你的node_modules文件夹与同事的node_modules文件夹严格匹配,一样,服务器上的node_modules文件夹也和你本地如出一辙,不会出现包版本不一致的状况,也不再会出现‘在我电脑上好好的啊¯_(ツ)_/¯’这样的话。react
六个月过去了...npm
Npm.v5版本脱胎换骨而来,带来了速度提高与版本锁定这两个杀手锏。没错,就是咱们刚初弃npm投yarn的最重要的缘由。json
如今,不少开发者内心在嘀咕:我还有必要用Yarn吗?bash
我以为,是时候再次投到到npm的温暖怀抱了!服务器
请自行查看:app
# Backup mv node_modules node_modules_backup mv package-lock.json package-lock.backup.json mv yarn.lock yarn.backup.lock # Test cold npm speed time npm install # Reset modules rm -Rf node_modules # Test warm npm speed time npm install # Test cold yarn speed time yarn install # Reset modules rm -Rf node_modules # Test warm yarn speed time yarn install # Reset rm package-lock.json rm yarn.lock # Restore mv node_modules_backup node_modules mv package-lock.backup.json package-lock.json mv yarn.backup.lock yarn.lock
我按上述步骤运行了三次,速度几近持平。ui
Bob安装了Yarn v1.1,Brenda安装了Yarn v1.2. 当他们在工程里添加或删除依赖包时,会使得Yarn修改yarn.lock文件。但在两个Yarn版本中,lock文件有些许的不一样,这可不是什么好事。spa
你能够在package.json中标明你的工程应该使用yarn的哪一个版本。
但若是你有多个工程,每一个工程所需的yarn又不尽相同时可怎么办?
你应该用npm来安装多个yarn版本:npm install yarn@1.1 --global,npm install yarn@1.2 --global。但每次项目切换你都须要再从新安装Yarn,这很恐怖了!code
使用nvm或n一键切换npm版本,就是如此简单方便!
若是你在用Yarn的workspaces特性,在npm中,你能够用Lerna代替它,它提供了Yarn所具有的全部特性,并且还延伸了一些新功能:管理workspace版本,在workspace中执行命令,发布workspaces。
Yarn upgrade-interactive命令很棒:
在npm中也能够用npm-check实现该功能:
npm install npm-check --save-dev
添加脚本:
{ "scripts": { "upgrade-interactive": "npm-check --update" } }
而后,npm也能够npm run upgrade-interactive
了。
虽然不少工程的readme中同时展现了npm和yarn,但其实真没必要这样。好比,create-react-app工程的readme:
npm run build or yarn build
Builds the app for production to the build folder.
Yarn在此处的做用是什么?None。
这对于新手而言绝对充满了困惑,我该运行哪一个命令?Yarn是什么?我须要它么?
选择Yarn,意味着你的团队都将必须使用yarn。 Javascript的生态已经十分复杂了,咱们真的要再拿Yarn火上浇油吗?
我但愿Yarn团队将他们杰出的工做直接放在npm中来让咱们的生活好过一点。
当我从新切回npm后,我发现npm run命令居然有自动补全功能,这很赞!虽然Yarn也许会做出一样的功能,但npm才是老大哥!
npm也有其余的一些新功能,好比npm audit,它能够扫描你工程中的现存漏洞。
npm已经足够快,npm的社区已经足够成熟,且一些packages赋予了npm更增强大的生命力!忘了Yarn吧!