技術選型時這個問題總是困擾我,今天看到一篇文章,詳細的解釋了 npm 和 yarn 在性能,安全,支持性和使用難易度上的區別,看完之后這個問題終於有一個答案:
如果你在意速度和 UI,選 yarn,如果你是個保守派,選 npm 會更加合適。
文章地址:https://stackshare.io/stackups/npm-vs-yarn
性能
無論是在無緩存項目中(沒有 nodemodules 目錄),還是在有緩存項目中,yarn 都比 npm 快,2 分鍾或十幾秒,而且 yarn 還支持離線下載!(這主要是因為 yarn 支持並行下載包);
安全
yarn 和 npm 都采用了一些方法鎖定包的依賴版本,以防止包的依賴錯誤,所以兩者在這一點上是同樣安全的,但是 yarn 多了一個「協議檢查」的功能,使用 yarn licenses list
命令可以看到各個包的協議,其實沒什么用。
支持性
yarn 是由 facebook 維護的,用來彌補 npm 的不足,而 npm 是由 Isaac Z. Schlueter 創建的一個開源的包管理器。兩者的支持性其實差不多,但是更多人因為 yarn 的性能選擇 yarn。除此之外,yarn 選擇從多個包倉庫下載包,例如 npmjs.com
和 bower
,這讓 yarn 會更可靠一些。
使用難易度
- CLI 用戶界面
yarn 的用戶界面會更加簡潔,但 npm 可以通過 -s
參數去執行靜默執行。
- 用戶體驗
npm 和 yarn 在這方面差不多,不過 yarn 可以通過 yarn upgrade-interactive [--latest]
命令,開啟一個手動選擇包的交互界面。
使用量
npm 在 Github 上有 17.1K 的 Star,而 yarn 的 Star 數為 35.6K,但是從使用量調研上看,yarn 要少很多。