平時開發大家知道package-lock.json的作用嘛?

說明

package-lock.json會爲npm修改node_modules樹或的任何操作自動生成package.json。
這是官方的說法
用一句簡單的話說,就是鎖定安裝時包的版本號,並要傳到git,以保證其他人在npm install時其他開發成員的依賴都能保證一致。

什麼是package-lock.json?

根據官方文檔,package-lock.json是在npm install時生成的一份文件,用以記錄當前狀態下實際安裝的每個npm package的具體信息,來源、版本號等。
這種代碼應該都不陌生吧

"axios": {
	"version": "0.17.1",
	"resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz/",
	"integrity": "sha7hihiu2FI898u9jkhkjGfftas08=",
	"requires": {
		...
	}
}

這就是package-lock.json裏面某個包的具體信息。

package-lock.json有什麼作用呢?

npm是一個用於管理package之間依賴關係的管理器,它允許開發者在package.json中間標出自己項目對npm每個包的依賴。你可以選擇標明自己所需要的包的版本號等。
npm最新的版本(5.0以上)就開始提供自動生成package-lock.json功能,爲了讓開發者知道只要保存了源文件,到一個新的機器上、或者新的下載源,只要按照這個package-lock.json所標示的具體版本下載依賴庫包,就能確保所有包與你上次安裝的完全一樣。

補充

package.json文件只能鎖定大版本,就是版本號第一位,並不能鎖定小版本,每次npm install都是拉取的該大版本下最新版本,爲了穩定考慮幾乎是不敢隨意升級包,有可能會導致多出來很多工作量,測試/適配等,所以package-lock.json文件出來了,當每次安裝一個依賴的時候就鎖定在你安裝的這個版本。
如果安裝的包有bug,後面需要更新怎麼辦?
在以前可能就是直接改package.json裏面的版本,再npm install,但是5版本就不支持這樣做了,因爲版本已經鎖在package-lock.json裏面了,所以只能npm install 包名@版本號,這樣更新依賴,然後package-lock.json會自動更新。

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