npm與yarn差異?

npm與yarn差異?

npm與yarn一樣都是套件管理工具,但是yarn的安裝速度比npm快很多,使用指令上也有差異,yarn必須從package.json安裝,安裝套件時有一個yarn.lock文件,當套件想更換版本時只要變更yarn.lock文件就可隨時更換版本,npm必須依賴package.json手動更換版本安裝

npm與yarn指令差異

npm yarn 功能描述
npm install yarn install 依據package.json安裝
npm –save [package] yarn add [package] 安裝套件
npm –save-dev [package] yarn add [package] –dev 安裝套件至開發環境
npm –g [package] yarn global add [package] 安裝全域套件 (會安裝在nodenode_modules)
npm update –save yarn upgrade 升級版本
npm uninstall yarn remove 移除套件

yarn優點

離線模式

yarn會有一個快取目錄,會快取以前安裝過的軟體包,再次安裝時就不必從網路下載了,大大加速安裝速度。

依賴關係確定性

npm在執行安裝套件都會依賴別的套件版本,導致有重新安裝的問題,yarn在安裝時依賴結構是一致的

網路效能優化

yarn在安裝套件時會優化請求順序。

網路回彈

yarn在某個安裝包請求失敗時不會導致安裝失敗,它會自動去嘗試重新安裝。而npm則會毫不猶豫的失敗,導致得再來一次,耗費時間

扁平模式

對於多個包依賴同一個子包的情況,yarn會盡量提取為同一個包,防止出現多處副本,浪費空間。比如1.2中,yarn會為babel-generator和babel-helper-define-map 建立同一個lodash子依賴,這樣就節約一份的空間。

npm與yarn安裝套件方式,npm相較之下依賴於package.json檔案切換版本重新安裝又會有其餘套件相依性問題,yarn從package.json安裝套件會記錄套件的相依性的其餘套件,當套件變更版本時會也會將相依性的套件一律做更新,就不用在找其餘套件的相依性

yarn安裝時需要先npm,yarn是依賴node環境執行,npm install yarn -g

參考資料:https://www.zcfy.cc/article/yarn-vs-npm-everything-you-need-to-know-1484.html

https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/251371/

https://www.jeffjade.com/2017/12/30/135-npm-vs-yarn-detial-memo/

https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/263549/