發現我的node項目下面只有一個package-lock.json文件,不存在package.json文件,順便扒一扒這兩個的區別,其實package-lock就是鎖定安裝時的包版本號,需要上傳到git上,以保證其他人在install時候,大家的依賴版本相同。
官方文檔:這個package-lock.json 是在 `npm install`時候生成一份文件,用以記錄當前狀態下實際安裝的各個npm package的具體來源和版本號.
跟package.json的區別在於(舉個栗子):
"dependencies": { "@types/node": "^8.0.33", },
這里的^向上尖號是定義向后(新)兼容依賴,如果types/node版本是超過8.0.33,並且是在大版本(8)上相同,就允許下載最新的types/node包。同一個大版本不同版本號之間存在差異,導致依賴庫包行為特征有時候不兼容。
所以npm最新的版本就開始自動生成package-lock.json功能,目的就是確保所有庫包與你上次安裝的完全一樣。
package.json文件只能鎖定大版本,即版本號的第一位,不能鎖定后面的小版本,你每次npm install時候拉取的該大版本下面最新的版本,可能有些童鞋之前就踩過類似的坑。
一般為了穩定性考慮我們不能隨意升級依賴包,因為如果換包導致兼容性bug出現很難排查,所以package-lock.json就是來解決包鎖定不升級問題的。
如果要升級package-lock.json里面的庫包,怎么操作呢?
npm install XXX@x.x.x
【完】