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]