團隊協(xié)作如何確保項目Node版本的一致性?
前言
想必大家在工作過程中都遇到過node版本帶來的各種各樣的問題,對于團隊協(xié)作項目,你不能保證所有人的本地node版本都相同,所以在項目文檔中往往會寫上以下內(nèi)容:
- 為與線上環(huán)境一致,請保證以下版本
- node:15.x.x
- vue-cli:4.4.x
但這樣并不能完全避免問題,比如多個不同項目中使用的node版本也有所不同,在來回切換中就可能造成node版本混用,那么應(yīng)該如何避免這個問題?
package.json
對于前端工程化項目,根目錄下都會有一個package.json文件,在該文件中有一個屬性engines,它表示聲明node環(huán)境,如果不指定版本(或者指定 *作為版本) ,那么任何版本的node都可以。
"engines": {
"node": ">=15.0.0"
}
比如這里指定node版本必須大于等于15。
了解更多package.json內(nèi)容,可以查看這篇文章:熟悉又陌生的package.json
但對于 npm 來講,但即使許多項目定義了最低 Node.js 版本,此配置也不會強制執(zhí)行,也就是說它并不會阻止用戶的安裝操作。
npm
比如node版本限制了大于等于15,而我使用14.19.3的版本來安裝依賴
你會發(fā)現(xiàn)這樣還是能夠正常安裝,并沒有按我們的期待阻止用戶安裝依賴。
yarn
同樣的配置我們再來試試yarn的表現(xiàn)是怎樣的?
圖片
可以看到同樣的配置,yarn的表現(xiàn)是我們想要的效果。如果我們就是想用npm,能否到達同樣的效果?
.npmrc
對于npm我們需要在項目根目錄下新增.npmrc文件,并且顯示啟用嚴格的node引擎處理,如果一個項目包含一個.npmrc定義嚴格的引擎,那么執(zhí)行npm install時如果 Node 版本不滿足版本要求,安裝依賴就會失敗。
// .npmrc
engine-strict=true