前言
想必大家在工作過程中都遇到過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的版本來安裝依賴
你會發現這樣還是能夠正常安裝,並沒有按我們的期待阻止使用者安裝依賴。
yarn
同樣的配置我們再來試試yarn
的表現是怎樣的?
可以看到同樣的配置,yarn的表現是我們想要的效果。如果我們就是想用npm
,能否到達同樣的效果?
.npmrc
對於npm
我們需要在專案根目錄下新增.npmrc
檔案,並且顯示啟用嚴格的node引擎處理,如果一個專案包含一個.npmrc
定義嚴格的引擎,那麼執行npm install
時如果 Node
版本不滿足版本要求,安裝依賴就會失敗。
// .npmrc
engine-strict=true