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

package.json:

通過 npm init 命令創建,主要用來定義這個項目所需要的各種模塊,以及項目的配置信息(比如名稱、版本、許可證等元數據)。npm install 命令根據這個配置文件,自動下載所需的模塊,也就是配置項目所需的運行和開發環境。

 

package-lock.json:

npm install 時候自動生成,用以記錄當前狀態下實際安裝的各個npm package的具體來源和版本號。

跟package.json的區別在於:

"devDependencies": {
    "webpack": "^1.12.13",
    "webpack-dev-server": "^1.14.1"
  }


這裏的^向上尖號是定義向後(新)兼容依賴,如果webpack版本是超過1.12.13,並且是在大版本(1)上相同,就允許下載最新的webpack包。同一個大版本不同版本號之間存在差異,導致依賴庫包行爲特徵有時候不兼容。

所以npm最新的版本就開始自動生成package-lock.json功能,目的就是確保所有庫包與你上次安裝的完全一樣。

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

一般爲了穩定性考慮我們不能隨意升級依賴包,因爲如果換包導致兼容性bug出現很難排查,所以package-lock.json就是來解決包鎖定不升級問題的。

如果要升級package-lock.json裏面的庫包,怎麼操作呢?

npm install [email protected]  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章