團隊協作如何確保專案Node版本的一致性?

發表於2024-02-25

前言

想必大家在工作過程中都遇到過node版本帶來的各種各樣的問題,對於團隊協作專案,你不能保證所有人的本地node版本都相同,所以在專案文件中往往會寫上以下內容:

  • 為與線上環境一致,請保證以下版本
  • node:15.x.x
  • vue-cli:4.4.x

但這樣並不能完全避免問題,比如多個不同專案中使用的node版本也有所不同,在來回切換中就可能造成node版本混用,那麼應該如何避免這個問題?

如果這篇文章有幫助到你,❤️關注+點贊❤️鼓勵一下作者,文章公眾號首發,關注 前端南玖 第一時間獲取最新文章~

package.json

對於前端工程化專案,根目錄下都會有一個package.json檔案,在該檔案中有一個屬性engines,它表示宣告node環境,如果不指定版本(或者指定*作為版本) ,那麼任何版本的node都可以。

"engines": {
  "node": ">=15.0.0"
}

比如這裡指定node版本必須大於等於15。

瞭解更多package.json內容,可以檢視這篇文章:熟悉又陌生的package.json

但對於 npm 來講,但即使許多專案定義了最低 Node.js 版本,此配置也不會強制執行,也就是說它並不會阻止使用者的安裝操作。

npm

比如node版本限制了大於等於15,而我使用14.19.3的版本來安裝依賴

node-2.png

你會發現這樣還是能夠正常安裝,並沒有按我們的期待阻止使用者安裝依賴。

yarn

同樣的配置我們再來試試yarn的表現是怎樣的?

node-3.png

可以看到同樣的配置,yarn的表現是我們想要的效果。如果我們就是想用npm,能否到達同樣的效果?

.npmrc

對於npm我們需要在專案根目錄下新增.npmrc檔案,並且顯示啟用嚴格的node引擎處理,如果一個專案包含一個.npmrc定義嚴格的引擎,那麼執行npm install時如果 Node 版本不滿足版本要求,安裝依賴就會失敗。

// .npmrc
engine-strict=true

node-4.png

相關文章