介紹
package-lock.json是項(xiàng)目在'npm install'時(shí)生成的一份文件,用來(lái)記錄當(dāng)前狀態(tài)下實(shí)際安裝的各個(gè)npm package的 具體來(lái)源和版本號(hào)。
作用
因?yàn)閚pm是用于管理package之間依賴關(guān)系的管理器,它允許開(kāi)發(fā)者在package.json中標(biāo)出項(xiàng)目對(duì)npm各庫(kù)包的依賴。
舉個(gè)栗子:
"dependencies": {
"@types/node": "^8.0.33",
},
這里面的 向上標(biāo)號(hào)^是定義了向后(新)兼容依賴,指如果 types/node的版本是超過(guò)8.0.33,并在大版本號(hào)(8)上相同,就允許下載最新版本的 types/node庫(kù)包,例如實(shí)際上可能運(yùn)行npm install時(shí)候下載的具體版本是8.0.35
以后直接改 package.json 文件相應(yīng)模塊的版本號(hào),再執(zhí)行npm install不會(huì)更新了(好可怕),你只能手動(dòng)用npm install xxx@yy指定版本號(hào)來(lái)安裝,然后它會(huì)自動(dòng)更新 package-lock.json 文件。直接執(zhí)行npm install時(shí),如果不存在 package-lock.json 文件,它會(huì)根據(jù)安裝模塊后的 node_modules 目錄結(jié)構(gòu)來(lái)創(chuàng)建;如果已經(jīng)存在 package-lock.json 文件,則它只會(huì)根據(jù) package-lock.json 文件指定的結(jié)構(gòu)來(lái)下載模塊,并不會(huì)理會(huì) package.json 文件。
禁止生成這個(gè)文件的方法
npm config set package-lock false