npm,yarn,pnpm

yarn是由Facebook,Google,Exponent,Tilde聯合推出的一個新的JS包管理工具,yarn是為了彌補npm的一些缺陷而出現的。

npm的一些坑

(1). npm install 巨慢,特別是新的項目拉下來要等半天,刪除node_modules,重新install的時候依舊如此。
(2). 同一個項目安裝時無法保證一致性。由于package.json文件中版本號的特點,下面三個版本號在安裝的時候代表不同的含義
-"5.0.3" : 表示安裝指定的5.0.3版本;
-"~5.0.3" :表示安裝新的版本;
-"^5.0.3" :表示安裝5.X.X中最新的版本,
這樣就麻煩了,常常出現在同一個項目中,有的同事是ok的,有的同事會由于安裝的版本不一致出現bug。
(3). 安裝的時候,包會在同一時間下載和安裝,中途某個時候,一個包拋出錯誤,但是npm會繼續下載和安裝包。因為npm會把所有日志輸出到終端,有關錯誤包的信息就會在一大堆npm打印的警告中丟失掉,并且你不會注意到實際發生的錯誤。
帶著而這些坑,開始了yarn的優勢及其解決的問題

yarn的優點

(1). 速度快
· 并行安裝
· 離線模式
(2). 安裝版本統一
(3). 更簡潔的輸出
(4). 多注冊來源處理
(5). 更好的語義化

3. yarn和npm,pnpm核心命令對比

npm yarn pnpm 功能
npm init yarn init pnpm init 初始化項目
npm install xxx --global(-g) yarn global(-g) add xxx pnpm install 全局安裝依賴包
npm install yarn install pnpm install 根據package.json安裝項目所需的依賴包
npm update --global(-g) yarn global(-g) upgrade pnpm update xxx 全局更新依賴包
npm install --save-dev yarn add xxx --dev pnpm add xxx -D 安裝所需的依賴包,并將該包的記錄寫到package.json文件的 devDependencies 選項中
npm uninstall xxx yarn remove xxx pnpm removexxx 卸載
npm version major yarn version --major 更新依賴包的版本

4. 核心特性與設計理念對比

image.png

5. npm的的未來:npm5.0

有了yarn的壓力后,npm做了相應的改進
(1). 默認增加了類似于yarn.lock的package-lock.json
(2). git依賴支持優化:這個特性在需要安裝大量內部項目(例如在沒有自建源的內網開發),或需要使用某些依賴的未發布版本時很有用。在這之前可能需要使用指定 commit_id 的方式來控制版本。
(3).文件依賴優化:在之前的版本,如果將本地目錄作為依賴來安裝,將會把文件目錄作為副本拷貝到 node_modules 中。而在 npm5 中,將改為使用創建 symlinks 的方式來實現(使用本地 tarball 包除外),而不再執行文件拷貝。這將會提升安裝速度。目前yarn還不支持。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。