原文出處: 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吧!