描述
package-lock.json會自動為npm修改node_modules樹或任何操作而生成package.json烟具。它描述了生成的確切樹肢预,以便后續(xù)安裝能夠生成相同的樹,而不管中間依賴性更新如何饮潦。
這個文件旨在被提交到源代碼庫爆袍,并提供各種用途:
描述依賴關(guān)系樹的單一表示,以確保隊友践宴,部署和持續(xù)集成確保安裝完全相同的依賴關(guān)系。
為用戶提供一個設(shè)施爷怀,使其能夠“前往”以前的狀態(tài)浴井,node_modules而不必提交目錄本身。
通過可讀的源代碼控制差異來促進樹更改的更大可見性霉撵。
并通過允許npm跳過先前安裝的軟件包的重復(fù)元數(shù)據(jù)分辨率來優(yōu)化安裝過程。
一個關(guān)鍵的細節(jié)package-lock.json是它不能被發(fā)布洪囤,并且如果在頂層包之外的任何地方發(fā)現(xiàn)它將被忽略徒坡。它與npm-shrinkwrap.json共享格式,它基本上是相同的文件瘤缩,但允許發(fā)布喇完。除非部署CLI工具或以其他方式使用發(fā)布過程來生產(chǎn)產(chǎn)品包,否則不建議這樣做剥啤。
如果兩個package-lock.json和npm-shrinkwrap.json存在于包的根锦溪,package-lock.json將被完全忽略不脯。
包的名稱,這是一個包鎖刻诊。這必須與內(nèi)容匹配?package.json防楷。
包的版本,這是一個包鎖则涯。這必須與內(nèi)容匹配?package.json复局。
整數(shù)版本,1從此文檔的版本號開始粟判,在生成此版本時使用其語義package-lock.json亿昏。
這是從該創(chuàng)建的子資源完整性值package.json。不package.json應(yīng)該進行預(yù)處理档礁。子資源完整性字符串可以由模塊生成?ssri角钩。
表示安裝是在NODE_PRESERVE_SYMLINKS啟用環(huán)境變量的情況下完成的?。安裝程序應(yīng)該堅持該屬性的值與該環(huán)境變量相匹配呻澜。
包名稱到依賴對象的映射递礼。依賴項對象具有以下屬性:
這是一個說明符,它唯一標(biāo)識了這個包易迹,并且可以用來獲取它的新副本宰衙。
捆綁的依賴關(guān)系:無論來源如何,這是純粹用于信息目的的版本號睹欲。
注冊表來源:這是一個版本號供炼。(例如1.2.3)
git sources:這是一個解析commitit的git說明符。(例如git+https://example.com/foo/bar#115311855adb0789a0466714ed48a1499ffea97e)
http tarball來源:這是tarball的URL窘疮。(例如https://example.com/example-1.3.0.tgz)
本地tarball源碼:這是tarball的文件URL袋哼。(例如file:///opt/storage/example-1.3.0.tgz)
本地鏈接源:這是鏈接的文件URL。(例如file:libs/our-module)
這是此資源的標(biāo)準(zhǔn)子資源完整性闸衫。
對于捆綁的依賴項涛贯,不包括源代碼。
對于注冊表來源蔚出,這是integrity注冊表提供的弟翘,或者沒有提供SHA1的shasum。
對于git來源骄酗,這是我們克隆的特定提交散列稀余。
對于遠程tarball源,這是基于文件SHA512的完整性趋翻。
對于本地壓縮包來源:這是一個基于文件SHA512的完整性字段睛琳。
對于捆綁的依賴項,不包括源代碼。
對于注冊表來源师骗,這是相對于注冊表URL的tarball路徑历等。如果tarball URL與注冊表URL不在同一臺服務(wù)器上,那么這是一個完整的URL辟癌。
如果為true寒屯,則這是捆綁的依賴關(guān)系,并將由父模塊進行安裝愿待。安裝時浩螺,此模塊將在提取階段從父模塊中提取,而不是作為單獨的依賴項安裝仍侥。
如果為true要出,那么這個依賴是或者是頂層模塊的開發(fā)依賴,或者是一個依賴的傳遞依賴农渊。這對于既是頂級開發(fā)依賴性又是頂級非開發(fā)依賴性的傳遞依賴性的依賴性是錯誤的患蹂。
如果為true,那么這個依賴是或者是頂層模塊的可選依賴砸紊,或者是一個可傳遞的依賴传于。對于既是頂層可選依賴項又有頂層非可選依賴項的傳遞依賴項的依賴項,這是錯誤的醉顽。
即使在當(dāng)前平臺上可以卸載沼溜,也應(yīng)包含所有可選的依賴關(guān)系。
這個依賴關(guān)系的依賴關(guān)系游添,就像在頂層一樣系草。
參考:https://docs.npmjs.com/files/package-lock.json