package-lock.json
描述
對於npm修改node_modules樹或package.json的任何操作,都會自動生成package.json,它描述生成的確切樹,以便后續安裝能夠生成相同的樹,而不管中間依賴項更新如何。
此文件擬提交至來源資料庫,並可作以下用途:
- 描述依賴關系樹的單一表示形式,以確保隊友、部署和持續集成能夠安裝完全相同的依賴關系。
- 為用戶提供一種工具,讓他們可以“穿越”到node_modules以前的狀態,而不必提交目錄本身。
- 通過可讀的源代碼控制差異,提高樹更改的可視性。
- 並通過允許npm跳過先前安裝包的重復元數據解析來優化安裝過程。
關於package-lock.json的一個關鍵細節是它是不能發布的,如果在除toplevel包之外的任何地方發現它,它將被忽略。它與npm-shrinkwrap.json共享一種格式,本質上是相同的文件,但允許發布。除非部署CLI工具或使用發布過程來生成生產包,否則不建議這樣做。
如果package-lock.json和npm-shrinkwrap.json存在於包的根目錄中,package-lock.json將完全被忽略。
文件格式
name(名字)
package-lock.json中包的名字必須匹配package.json中的內容。
version(版本)
package-lock.json中包的名字必須匹配package.json中的內容。
lockfileVersion
整數版本,從1開始,該文檔的版本號為1,在生成這個package-lock.json時使用了該文檔的語義。
packageIntegrity
這是從package.json中創建的子資源完整性值。不應該對package.json進行預處理。子資源完整性字符串可以由ssri之類的模塊生成。
preserveSymlinks
指示安裝完成時啟用了環境變量NODE_PRESERVE_SYMLINKS。安裝程序應該堅持此屬性的值與環境變量匹配。
dependencies(依賴關系)
包名到依賴項對象的映射。依賴對象具有以下屬性:
- version:版本
-
integrity:這是該資源的標准子資源完整性
-
resolved:來源
-
bundled
-
dev
-
optional:可選依賴項
-
requires:依賴包