工作5年,還不知道團(tuán)隊(duì)如何巧妙統(tǒng)一Node版本?
大廠技術(shù) 高級前端 Node進(jìn)階
點(diǎn)擊上方 程序員成長指北 ,關(guān)注公眾號
回復(fù) 1 ,加入高級Node交流群
在現(xiàn)代前端開發(fā)中,Node.js 作為構(gòu)建工具和服務(wù)端運(yùn)行環(huán)境的基石,版本不一致可能導(dǎo)致各種問題,如依賴庫兼容性問題、開發(fā)環(huán)境與生產(chǎn)環(huán)境不匹配等。
在不同項(xiàng)目中因?yàn)閯?chuàng)建項(xiàng)目時(shí)期不同等原因,可能使用的 Node.js 版本不同,我們基本都會安裝 nvm 等 Node.js 版本管理工具,方便在不同項(xiàng)目下切換不同的版本。但來回切換很容易導(dǎo)致混淆,因此引發(fā)的一些 bug 還難以排查。
為了確保團(tuán)隊(duì)協(xié)作項(xiàng)目的穩(wěn)定性和一致性,我們需要采取一些措施來保證項(xiàng)目中的 Node 版本一致。
以下是一些常用的方法:
1.package.json的engines字段
在項(xiàng)目的package.json文件中,可以使用engines字段來指定所需的 Node 版本。在該字段中,我們可以定義一個(gè)范圍或者具體的版本號來限制 Node 的版本。
具體engines配置說明如下:
// 指定特定版本號
"engines": {
"node": "14.17.0"
}
// 范圍符號:表示項(xiàng)目需要Node版本大于等于12.0.0且小于16.0.0。
"engines": {
"node": ">=12.0.0 <16.0.0"
}
// 波浪線符號:表示項(xiàng)目需要Node版本為14.17.x
"engines": { "node": "~14.17.0" }
// 插入符號:表示項(xiàng)目需要Node版本為14.x.x
"engines": { "node": "^14.17.0" }
這樣做的好處是,當(dāng)項(xiàng)目成員運(yùn)行 npm install 時(shí),npm 會自動檢查 Node 版本是否滿足要求,并給出警告或錯(cuò)誤信息。
image.png
但是,我們在使用npm install時(shí),發(fā)現(xiàn)engines配置并沒有起作用,然后換yarn安裝,發(fā)現(xiàn)engines配置又起作用了。
image.png
到底是什么原因?qū)е碌哪兀?/p>
2.使用.npmrc文件
原來 engines 只是建議,默認(rèn)不開啟嚴(yán)格版本校驗(yàn),只會給出提示,需要手動開啟嚴(yán)格模式。在根目錄下 .npmrc 添加 engine-strict = true才會起作用。配置完成后再執(zhí)行npm install:
# .npmrc
engine-strict = true
npm ERR! code ENOTSUP
npm ERR! notsup Unsupported engine for react_antd_admin_template@1.0.0: wanted: {"node":"14.17.5","npm":"6.14.14"} (current: {"node":"16.18.1","npm":"8.19.2"})
npm ERR! notsup Not compatible with your version of node/npm: react_antd_admin_template@1.0.0
npm ERR! notsup Not compatible with your version of node/npm: react_antd_admin_template@1.0.0
npm ERR! notsup Required: {"node":"14.17.5","npm":"6.14.14"}
npm ERR! notsup Actual: {"node":"16.18.1","npm":"8.19.2"}
此時(shí)通過 npm 安裝,限制 Node 版本便起作用了。
3.使用.nvmrc文件
通過上面的方式,可以做到讓大家使用相同的 Node 版本,但每次提示版本不符合,需要開發(fā)人員到package.json中查看版本號,然后再使用nvm切換指定版本,太麻煩了,高效開發(fā)不是這么干的。
我們可以創(chuàng)建一個(gè).nvmrc文件, 指定項(xiàng)目 Node 版本:
# .nvmrc
v14.17.5
此時(shí),執(zhí)行nvm use 自動就切換到項(xiàng)目執(zhí)行的 Node 版本。
.nvmrc文件是一個(gè)存放指定 Node 版本的配置文件,可以告訴項(xiàng)目的成員應(yīng)該使用哪個(gè)Node 版本來運(yùn)行項(xiàng)目。
如果我們沒有安裝對應(yīng)版本的 Node ,執(zhí)行時(shí)也會提示沒有安裝
image.png
非常簡單的配置, 就能解決團(tuán)隊(duì)協(xié)作項(xiàng)目中的 Node 版本不一致這個(gè)大麻煩,你學(xué)會了嗎~
Node 社群
我組建了一個(gè)氛圍特別好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你對Node.js學(xué)習(xí)感興趣的話(后續(xù)有計(jì)劃也可以),我們可以一起進(jìn)行Node.js相關(guān)的交流、學(xué)習(xí)、共建。下方加 考拉 好友回復(fù)「Node」即可。
“分享、點(diǎn)贊 、 在看” 支持一下
