Warum ändert npm install die package-lock.json

In diesem Artikel erklären wir den Unterschied zwischen zwei beliebten npm-Befehlen: "npm install" und "npm ci" und erklären, warum man "npm install" zum Installieren von Dependencies eigentlich nicht verwenden sollte.

Die package-lock.json ist eine Datei, die von npm (Node Package Manager) verwendet wird, um die genauen Versionen der installierten Pakete in einem Projekt zu speichern. Sie dient dazu, sicherzustellen, dass das Projekt auch in Zukunft mit den gleichen Versionen der Abhängigkeiten kompatibel bleibt.

Wenn du "npm install" ausführst, werden die Abhängigkeiten in deinem Projekt aktualisiert oder installiert. Dabei kann es vorkommen, dass sich die Versionen der Abhängigkeiten ändern oder neue Abhängigkeiten hinzugefügt werden. Infolgedessen wird die package-lock.json aktualisiert, um diese Änderungen widerzuspiegeln.

Um genau die Abhängigkeiten zu installieren, die in package-lock.json angegeben sind, solltest du den folgenden Befehl verwenden:

npm ci

npm ci ist für Continuous-Integration-Umgebungen optimiert, wo eine saubere Installation der Abhängigkeiten sehr wichtig ist. Es entfernt den Ordner node_modules vor der Installation und stellt so ein frisches Setup sicher. npm ci wird mit einem Fehler terminieren, wenn die beiden Dateien package-lock.json und package.json nicht übereinstimmen (z.B. package.json beinhaltet neue Dependencies, die in der package-lock.json fehlen).

Die package-lock.json sollte nicht von Hand bearbeitet werden sollte. Stattdessen sollte sie immer von npm automatisch aktualisiert werden. Wenn du Änderungen an den Abhängigkeiten vornehmen möchtest, solltest du dies in der package.json-Datei tun und dann "npm install" ausführen, um die package-lock.json entsprechend zu aktualisieren.

Die package-lock.json sollte auch in deinem Versionskontrollsystem (wie Git) gespeichert werden, damit sie von anderen Entwicklern verwendet werden kann, die das Projekt klonen oder aktualisieren möchten.