package.json和package-lock.json區(qū)別
package-lock就是鎖定安裝時(shí)的包版本號(hào),需要上傳到git上,以保證其他人在install時(shí)候,大家的依賴版本相同。
這個(gè)package-lock.json 是在 npm install時(shí)候生成一份文件,用以記錄當(dāng)前狀態(tài)下實(shí)際安裝的各個(gè)npm package的具體來源和版本號(hào).
這里的^向上尖號(hào)是定義向后(新)兼容依賴,如果types/node版本是超過8.0.33,并且是在大版本(8)上相同,就允許下載最新的types/node包。同一個(gè)大版本不同版本號(hào)之間存在差異,導(dǎo)致依賴庫(kù)包行為特征有時(shí)候不兼容。
所以npm最新的版本就開始自動(dòng)生成package-lock.json功能,目的就是確保所有庫(kù)包與你上次安裝的完全一樣。
package.json文件只能鎖定大版本,即版本號(hào)的第一位,不能鎖定后面的小版本,你每次npm install時(shí)候拉取的該大版本下面最新的版本,可能有些童鞋之前就踩過類似的坑。
一般為了穩(wěn)定性考慮我們不能隨意升級(jí)依賴包,因?yàn)槿绻麚Q包導(dǎo)致兼容性bug出現(xiàn)很難排查,所以package-lock.json就是來解決包鎖定不升級(jí)問題的。
如果要升級(jí)package-lock.json里面的庫(kù)包,怎么操作呢?
npm install XXX@x.x.x