前言
想必大家在工作過程中都遇到過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