[譯]都8102年了,爲何你還在用Yarn?!

原文出處: yarn-vs-npm

仍記得Yarn剛問世時的火爆場景

真的太快了,每次yarn install,都會爲我節省出好幾分鐘的時間。node

Yarn會保證你的node_modules文件夾與同事的node_modules文件夾嚴格匹配,一樣,服務器上的node_modules文件夾也和你本地如出一轍,不會出現包版本不一致的狀況,也不再會出現‘在我電腦上好好的啊¯_(ツ)_/¯’這樣的話。react

六個月過去了...npm

Npm.v5版本脫胎換骨而來,帶來了速度提高與版本鎖定這兩個殺手鐗。沒錯,就是咱們剛初棄npm投yarn的最重要的緣由。json

如今,不少開發者內心在嘀咕:我還有必要用Yarn嗎?bash

我以爲,是時候再次投到到npm的溫暖懷抱了!服務器

npm和Yarn同樣快

請自行查看: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

輕鬆切換npm版本

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

npm能夠輕鬆作到版本切換!

使用nvm或n一鍵切換npm版本,就是如此簡單方便!
nvm.gif

用Lerna管理你的workspaces

若是你在用Yarn的workspaces特性,在npm中,你能夠用Lerna代替它,它提供了Yarn所具有的全部特性,並且還延伸了一些新功能:管理workspace版本,在workspace中執行命令,發佈workspaces。

用npm-check來交互式升級

Yarn upgrade-interactive命令很棒:

yarn-upgrade-interactive.png

在npm中也能夠用npm-check實現該功能:

npm-check.png

npm install npm-check --save-dev
添加腳本:
{
    "scripts": {
        "upgrade-interactive": "npm-check --update"
    }
}

而後,npm也能夠npm run upgrade-interactive了。

Yarn正在變得複雜

雖然不少工程的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後,我發現npm run命令居然有自動補全功能,這很贊!雖然Yarn也許會做出一樣的功能,但npm纔是老大哥!
npm也有其餘的一些新功能,好比npm audit,它能夠掃描你工程中的現存漏洞。

npm已經足夠快,npm的社區已經足夠成熟,且一些packages賦予了npm更增強大的生命力!忘了Yarn吧!

相關文章
相關標籤/搜索