我有完全相同的問題,我需要 package-lock.json 和 package.json 嗎?(tldr;“和之間有什么區別?package.jsonpackage-lock.json ”)并在那里找到了一些非常好的答案。然而,它給我留下了一些其他非常相似的問題,我在其他地方看不到這些問題的答案。
例如,如果彼此發生沖突怎么辦package.json?package-lock.json說package.json要使用some-lib-2.*(任何 2.x 版本some-lib)但package-lock.json配置為使用some-lib-1.18.4?有錯誤嗎?是否優先選擇任一檔案作為“依賴事實的來源”?
我喜歡一個檔案來管理我的特定依賴項的想法,所以我覺得我傾向于:
- 根本沒有指定庫或版本
package.json;和 - 用于指定我的專案使用
package-lock.json的每個模塊/庫的確切版本
這可能嗎?如果是這樣,我需要進行任何特殊配置嗎?我是否在版本控制中跟蹤這兩個檔案,或者是否有任何理由我不想在 git/VCS 中跟蹤這些檔案?
uj5u.com熱心網友回復:
真的很震驚,一整天都沒有答案。Java 問題通常會在幾分鐘內被吃光!尤其是基本的,哎呀!
- 您可以使用命令列 (
npm install [optional args]) 來更新這兩個檔案。 - NPM——以及你的命令列呼叫——決定模塊的依賴版本的可接受范圍,并在
package.json. 然后它會在該范圍內選擇一個版本——將其用于構建時/運行時——并將該確切版本寫入package-lock.json - 因此,您希望將這兩個檔案都放在版本控制中,這樣您就可以進行可重復的構建,并且任何簽出您的專案的開發人員都將立即能夠使用相同版本的相同依賴項構建專案
- 唯一一次
package.json直接編輯的情況是,如果您不想為特定依賴項允許一系列版本,并且想要挑選要使用的確切版本。您進行編輯、保存、運行npm install [options]并將package-lock.json更新以使用該版本
FWIW 這非常令人困惑,并提倡不管理依賴項的反模式。它允許開發人員認為只提取給定依賴項的最新版本是可以的,即使該版本在構建之間發生變化。這會導致您的應用程式出現錯誤蔓延、不可重復的構建和各種令人頭疼的問題。
我強烈主張始終為所有直接依賴項指定您想要的確切版本:請不要再使用范圍或通配符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/463280.html
標籤:节点.js npm 包.json 依赖管理 包-lock.json
上一篇:最新版本的npm配置中的警告
下一篇:將運行限制為僅一個檔案不起作用
