npm和yarn的區別,我們該如何選擇

2021-10-14 13:19:05 字數 1477 閱讀 3773

周一入職,同事jj讓我熟悉一下基於react的新專案。

按照以往,我的步驟都是:

git clone ***

npm install

npm run dev

這時,jj給我來了下面一段

git clone ***

yarn

yarn start

「咦,yarn是什麼鬼?難道npm更高階的替代品?為什麼要替代npm?難道有什麼好的地方?」,內心一連串的問題冒出來。我就默默的問了一下jj:「yarn是跟npm一樣的東西嗎?」,「嗯。」jj忙碌的敲著鍵盤,顯然這個問題不值得繼續問下去了。我也默默的把剛才腦子裡一連串的問題記了下來。

「yarn是由facebook、google、exponent 和 tilde 聯合推出了乙個新的 js 包管理工具 ,正如官方文件中寫的,yarn 是為了彌補 npm 的一些缺陷而出現的。」這句話讓我想起了使用npm時的坑了:

npm install的時候巨慢。特別是新的專案拉下來要等半天,刪除node_modules,重新install的時候依舊如此。

同乙個專案,安裝的時候無法保持一致性。由於package.json檔案中版本號的特點,下面三個版本號在安裝的時候代表不同的含義。

"5.0.3",

"~5.0.3",

"^5.0.3"

「5.0.3」表示安裝指定的5.0.3版本,「~5.0.3」表示安裝5.0.x中最新的版本,「^5.0.3」表示安裝5.x.x中最新的版本。這就麻煩了,常常會出現同乙個專案,有的同事是ok的,有的同事會由於安裝的版本不一致出現bug。

有了yarn的壓力之後,npm做了一些類似的改進。

預設新增了類似yarn.lock的 package-lock.json;

git 依賴支援優化:這個特性在需要安裝大量內部專案(例如在沒有自建源的內網開發),或需要使用某些依賴的未發布版本時很有用。在這之前可能需要使用指定 commit_id 的方式來控制版本。

檔案依賴優化:在之前的版本,如果將本地目錄作為依賴來安裝,將會把檔案目錄作為副本拷貝到 node_modules 中。而在 npm5 中,將改為使用建立 symlinks 的方式來實現(使用本地 tarball 包除外),而不再執行檔案拷貝。這將會提公升安裝速度。目前yarn還不支援。

總結在npm5.0之前,yarn的優勢特別明顯。但是在npm之後,通過以上一系列對比,我們可以看到 npm5 在速度和使用上確實有了很大提公升,值得嘗試,不過還沒有超過yarn。

綜上我個人的建議是如果你已經在個人專案上使用 yarn,並且沒有遇到更多問題,目前完全可以繼續使用。但如果有相容 npm 的場景,或者身處在使用 npm,cnpm,tnpm 的團隊,以及還沒有切到 yarn 的專案,那現在就可以試一試 npm5 了。

yarn與npm區別及yarn的使用介紹

yarn是facebook發布的一款可取代npm的js包管理工具,yarn的操作與npm的極為相近,而且yarn同樣是從npm註冊源來獲取模組工具 尤其是別人建立的一些專案,經久累月,重新安裝依賴的時候總是會出現很多的問題,且會出現不同的人有的時候安裝的包的版本不一致,儘管現在npm的最新版已經針對...

npm和yarn的對比 安裝與配置

檔案依賴優化 超級安全 超級可靠 對比總結 在npm5.0之前,yarn的優勢特別明顯,在npm5.0之後,npm在速度和使用上確實有了很大提公升,值得嘗試,但還是沒有超過yarn。所以,如果在個人專案建議使用yarn。如果是身處使用npm cnpm tnpm的團隊,則使用npm5 node新版本預...

react之npm和yarn的相關命令

1 npm修改全域性配置 npm config set prefix d nodejs node global npm config set cache d nodejs node cache 2 npm獲取全域性安裝的預設目錄 npm config get prefix 3 npm永久配置 映象 ...