Nachdem ich meinen NPM auf die neueste Version (von 3.X auf 5.2.0) aktualisiert und in npm install
einem vorhandenen Projekt ausgeführt habe, erhalte ich eine automatisch erstellte package-lock.json
Datei.
Ich kann sagen, package-lock.json
gibt mir einen genauen Abhängigkeitsbaum im Gegensatz zu package.json
.
Allein aufgrund dieser Informationen scheint package.json
es überflüssig zu sein und wird nicht mehr benötigt.
Sind beide notwendig, damit NPM funktioniert?
Ist es sicher oder möglich, nur die package-lock.json
Datei zu verwenden?
In den Dokumenten auf package-lock.json ( doc1 , doc2 ) wird nichts darüber erwähnt.
Bearbeiten :
Nach einigem Nachdenken kam ich zu dem Schluss, dass jemand, der Ihr Projekt mit einer älteren Version von NPM (vor 5.x) verwenden möchte, immer noch alle Abhängigkeiten installiert, jedoch mit weniger genauen Versionen (Patch-Versionen).
quelle
Antworten:
Benötigen Sie beide
package-lock.json
undpackage.json
? Nein .Benötigen Sie das
package.json
? Ja .Können Sie ein Projekt nur mit dem haben
package-lock.json
? Nein .Das
package.json
wird nicht nur für Abhängigkeiten verwendet - wie zum Beispiel zum Definieren von Projekteigenschaften, Beschreibungen, Autoren- und Lizenzinformationen, Skripten usw. Daspackage-lock.json
wird ausschließlich zum Sperren von Abhängigkeiten an eine bestimmte Versionsnummer verwendet.quelle
package-lock.json
: Zeichnet die genaue Version jedes installierten Pakets auf, mit der Sie sie erneut installieren können. Zukünftige Installationen können einen identischen Abhängigkeitsbaum erstellen.package.json
: Zeichnet die Mindestversion auf, die Ihre App benötigt. Wenn Sie die Versionen eines bestimmten Pakets aktualisieren, wird die Änderung hier nicht berücksichtigt.quelle
package.json
Gesagte zutrifft und die von der App benötigte Mindestversion und package-lock.json die genaue Version jedes installierten Pakets aufzeichnet, tritt eine seltsame Situation auf, in der ein Modul im Paket auf Version 0.112.1 eingestellt ist .json und 0.110.0 in package-lock.json ...Wenn Ihre Frage lautet, ob die Sperrdatei für Ihre Quellcodeverwaltung festgeschrieben werden soll, sollte dies der Fall sein. Es wird unter bestimmten Umständen ignoriert.
Ich habe festgestellt, dass Pull-Anforderungen und Commit-Verlauf aufgebläht sind. Wenn sich dies ändert, führen Sie ein separates Commit dafür durch.
quelle
package-lock.json
scheint eine ausführlichere Version von zu seinpackage.json
, ist es also sicher oder möglich, nur die Sperrdatei zu verwenden.package-lock.json
Versionskontrolle durchgeführt werden soll.Eine genauere und detailliertere Erklärung des Grundes für die Beibehaltung von package-lock.json finden Sie hier
quelle