package.json和package-lock.json的區別

發現個人node項目下面只有一個package-lock.json文件,不存在package.json文件,順便扒一扒這兩個的區別,其實package-lock就是鎖定安裝時的包版本號,須要上傳到git上,以保證其餘人在install時候,你們的依賴版本相同。node

官方文檔:這個package-lock.json 是在 `npm install`時候生成一份文件,用以記錄當前狀態下實際安裝的各個npm package的具體來源和版本號.git

跟package.json的區別在於(舉個栗子):npm

"dependencies": {
 "@types/node": "^8.0.33",
},

這裏的^向上尖號是定義向後(新)兼容依賴,若是types/node版本是超過8.0.33,而且是在大版本(8)上相同,就容許下載最新的types/node包。同一個大版本不一樣版本號之間存在差別,致使依賴庫包行爲特徵有時候不兼容。json

因此npm最新的版本就開始自動生成package-lock.json功能,目的就是確保全部庫包與你上次安裝的徹底同樣。ide

package.json文件只能鎖定大版本,即版本號的第一位,不能鎖定後面的小版本,你每次npm install時候拉取的該大版本下面最新的版本,可能有些童鞋以前就踩過相似的坑。ci

通常爲了穩定性考慮咱們不能隨意升級依賴包,由於若是換包致使兼容性bug出現很難排查,因此package-lock.json就是來解決包鎖定不升級問題的。文檔

若是要升級package-lock.json裏面的庫包,怎麼操做呢?it

npm install XXX@x.x.x  class

相關文章
相關標籤/搜索