W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
package-lock.json
對于任何 npm 修改node_modules
樹或package.json
.?它描述了生成的確切樹,以便后續(xù)安裝能夠生成相同的樹,而不管中間依賴項更新如何。
此文件旨在提交到源存儲庫中,并用于多種目的:
node_modules
而無需提交目錄本身。package.json
?文件的需要,并允許顯著的性能改進。package-lock.json
?對比?npm-shrinkwrap.json
這兩個文件具有相同的格式,并且在項目的根目錄中執(zhí)行類似的功能。
不同的是package-lock.json
不能發(fā)布,如果在根項目以外的任何地方發(fā)現(xiàn)都會被忽略。
相比之下,npm-shrinkwrap.json允許發(fā)布,并從遇到的點定義依賴樹。除非部署 CLI 工具或以其他方式使用發(fā)布過程來生成生產(chǎn)包,否則不建議這樣做。
如果package-lock.json
和npm-shrinkwrap.json
都存在于項目的根目錄中,npm-shrinkwrap.json
則將優(yōu)先并被?package-lock.json
忽略。
為了避免node_modules
重復處理文件夾,從 v7 開始,npm 使用存在于?node_modules/.package-lock.json
.?這包含有關樹的信息,node_modules
如果滿足以下條件,則用于代替讀取整個層次結構:
它引用的所有包文件夾都存在于node_modules
層次結構中。node_modules
層次結構中不存在未在鎖定文件中列出的包文件夾。文件的修改時間至少與其引用的所有包文件夾一樣近。也就是說,隱藏的鎖文件只有在作為包樹的最新更新的一部分創(chuàng)建時才相關。如果另一個 CLI 以任何方式改變樹,這將被檢測到,隱藏的鎖文件將被忽略。
注意,它是可以手動改變內容在這樣一種方式,包文件夾的修改的時間是不受影響的封裝的。例如,如果您將文件添加到node_modules/foo/lib/bar.js
,則修改時間node_modules/foo
不會反映此更改。如果您在 中手動編輯文件node_modules
,通常最好刪除 中的文件node_modules/.package-lock.json
。
由于較舊的 npm 版本會忽略隱藏的鎖文件,因此它不包含“普通”鎖文件中存在的向后兼容性可供性。也就是說,它是lockfileVersion: 3
,而不是?lockfileVersion: 2
。
當 npm 在包安裝過程中從 npm v6 或之前檢測到鎖文件時,它會自動更新以從node_modules
樹或(在空node_modules
樹或非常舊的鎖文件格式的情況下?)npm 注冊表中獲取丟失的信息。
這是一個包鎖的包的名稱。這將匹配package.json
.
這是一個包鎖的包的版本。這將匹配package.json
.
一個整數(shù)版本,從1
這個文檔的版本號開始,在生成 this 時使用了它的語義?package-lock.json
。
請注意,npm v7 中的文件格式發(fā)生了重大變化,以跟蹤原本需要查看node_modules
npm 注冊表的信息。npm v7 生成的鎖文件將包含?lockfileVersion: 2
.
未提供版本:來自 npm v5 之前的 npm 版本的“古老”收縮包裝文件。1
:npm v5 和 v6 使用的鎖文件版本。2
:npm v7 使用的鎖文件版本,向后兼容 v1 鎖文件。3
:npm v7 使用的鎖文件版本,沒有向后兼容性可供性。這用于隱藏的鎖文件?node_modules/.package-lock.json
,一旦不再支持 npm v6,很可能會在 npm 的未來版本中使用。npm 將始終嘗試從鎖定文件中獲取它可以獲取的任何數(shù)據(jù),即使它不是它旨在支持的版本。
這是一個將包位置映射到包含有關該包的信息的對象的對象。
根項目通常以 鍵列出""
,所有其他包都以它們從根項目文件夾的相對路徑列出。
包描述符具有以下字段:
package.json
sha512
或sha1
?標準子資源完整性字符串。devDependencies
樹的一部分,則為?dev
真。如果它嚴格是optionalDependencies
樹的一部分,optional
則將被設置。如果它既是一個dev
依賴性和一個optional
非開發(fā)依賴的相關性,然后devOptional
將被設置。(optional
依賴項的dev
依賴項將同時設置dev
和optional
設置。)preinstall
,?install
或postinstall
腳本。npm-shrinkwrap.json
文件。package.json
用于支持使用lockfileVersion: 1
.?這是包名到依賴對象的映射。因為對象結構是嚴格分層的,符號鏈接依賴在某些情況下很難表示。
如果某個packages
部分存在,npm v7 會完全忽略該部分,但會使其保持最新狀態(tài)以支持在 npm v6 和 npm v7 之間切換。
依賴對象具有以下字段:
1.2.3
)git+https://example.com/foo/bar#115311855adb0789a0466714ed48a1499ffea97e
)https://example.com/example-1.3.0.tgz
)file:///opt/storage/example-1.3.0.tgz
)file:libs/our-module
)sha512
或sha1
?標準子資源完整性字符串。對于 git 依賴項,這是提交 sha。dependencies
或比我們更高級別的依賴項。Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: