npm ci vs. npm install — 在 Node.js 項目中你須要使用哪一個?

翻譯 medium.com/better-prog…vue

npmNode.js 項目默認的包管理器。node

使用 npm 能夠輕鬆安裝和更新依賴項。npmjs 上列出了可使用的依賴項(例如Vue.js 框架),甚至還顯示了能夠複製並粘貼到終端的安裝命令,如npm i vuenpm

若是你已經使用 npm 一段時間了,那麼你將經常使用 npm install(或更短的 npm i)來安裝或更新依賴項。json

雖然這個安裝命令仍然有效,可是在 npm v6 中仍是引入了一個新的命令 - npm ci,那麼它是用來作什麼的?與 npm i 又有什麼差別安全

. . .框架

npm install (簡寫: npm i)

npm install,或者 npm i,一般是用來安裝依賴項:工具

  • 它將會安裝 Node.js 項目全部的依賴項;
  • 若是使用 ^~ 來匹配依賴項的版本時,則 npm 可能沒法安裝確切版本;
  • 利用 npm install 安裝新依賴項時,會更新 package-lock.json。

. . .翻譯

npm ci

使用 npm ci,會發生:code

  • 將會刪除項目中的 node_modules 文件夾;
  • 會依照項目中的 package.json 來安裝確切版本的依賴項;
  • 不像 npm installnpm ci 不會修改你的 package-lock.json。可是它確實指望你的項目中有一個 package-lock.json 文件 - 若是你沒有這個文件,npm ci 將不起做用,此時必須使用 npm install

若是你使用 npm ci,你將得到可靠的構建。特別是當您在 Jenkins 或 GitLab CI 等持續集成工具中運行時,這將很是有用。ci

. . .

npm ci vs. npm Install — 該用哪個?

若是你使用 npm v6+

  • 使用 npm install 安裝新的依賴項,或更新現有的依賴項(例如,從版本1到版本2);
  • 在持續集成工具中運行時使用 npm ci,或者某些不修改 package-lock.json 的狀況下安裝依賴項。

若是你使用 npm v5 或者更低的版本

  • 只能經過 npm install 來安裝或者更新依賴項;
  • 嘗試升級到最新的 npm 版本。除了npm ci 以外,它還具備 npm audit 命令,能夠更輕鬆地識別和修復依賴項的安全漏洞。此外,使用 npm v6 安裝依賴項應該更快。

. . .

總結

如您所見,這兩個命令都有其適用地場景。若是可能的話,我建議使用 npm ci,由於它可靠地完成它的工做,並使用 npm install 來安裝新的依賴項或更新現有的依賴項。

相關文章
相關標籤/搜索