Meine Verwendung von npm ist das Generieren von minimierten / uglifizierten CSS / JS und das Generieren des Javascript, das auf Seiten benötigt wird, die von einer Django-Anwendung bereitgestellt werden. In meinen Anwendungen wird Javascript auf der Seite ausgeführt, um Animationen zu erstellen, manchmal Ajax-Aufrufe auszuführen, innerhalb eines VUE-Frameworks zu arbeiten und / oder mit dem CSS zu arbeiten. Wenn package-lock.json eine übergeordnete Kontrolle darüber hat, was in package.json enthalten ist, muss möglicherweise eine Version dieser Datei vorhanden sein. Nach meiner Erfahrung hat dies entweder keinen Einfluss darauf, was von npm install installiert wird, oder, falls dies der Fall ist, hat es die Anwendungen, die ich nach meinem Wissen bereitstelle, bisher nicht beeinträchtigt. Ich benutze keine Mongodb oder andere solche Anwendungen, die traditionell Thin Client sind.
Ich entferne package-lock.json aus dem Repo, da die npm-Installation diese Datei generiert und die npm-Installation Teil des Bereitstellungsprozesses auf jedem Server ist, auf dem die App ausgeführt wird. Die Versionskontrolle von Node und Npm erfolgt manuell auf jedem Server, aber ich bin vorsichtig, dass sie gleich sind.
Wenn npm install
es auf dem Server ausgeführt wird, ändert es package-lock.json. Wenn Änderungen an einer Datei vorgenommen werden, die vom Repo auf dem Server aufgezeichnet wird, können Sie bei der nächsten Bereitstellung WONT keine neuen Änderungen vom Ursprung abrufen. Das heißt, Sie können nicht bereitstellen, da der Pull die Änderungen überschreibt, die an package-lock.json vorgenommen wurden.
Sie können eine lokal generierte package-lock.json nicht einmal mit dem auf dem Repo befindlichen Element überschreiben (Hard Origin Master zurücksetzen), da sich npm bei jeder Ausgabe eines Befehls beschwert, wenn die package-lock.json nicht den Inhalt widerspiegelt node_modules aufgrund der Installation von npm, wodurch die Bereitstellung unterbrochen wird. Wenn dies darauf hinweist, dass geringfügig andere Versionen in node_modules installiert wurden, hat mir dies wiederum nie Probleme bereitet.
Wenn sich node_modules nicht in Ihrem Repo befindet (und dies auch nicht sein sollte), sollte package-lock.json ignoriert werden.
Wenn mir etwas fehlt, korrigieren Sie mich bitte in den Kommentaren, aber der Punkt, an dem die Versionierung aus dieser Datei übernommen wird, macht keinen Sinn. Die Datei package.json enthält Versionsnummern, und ich gehe davon aus, dass diese Datei zum Erstellen von Paketen verwendet wird, wenn die npm-Installation erfolgt. Wenn ich sie entferne, beschwert sich die npm-Installation wie folgt:
jason@localhost:introcart_wagtail$ rm package.json
jason@localhost:introcart_wagtail$ npm install
npm WARN saveError ENOENT: no such file or directory, open '/home/jason/webapps/introcart_devtools/introcart_wagtail/package.json'
und der Build schlägt fehl. Wenn Sie jedoch node_modules installieren oder npm zum Erstellen von js / css anwenden, wird keine Beschwerde eingereicht, wenn ich package-lock.json entferne
jason@localhost:introcart_wagtail$ rm package-lock.json
jason@localhost:introcart_wagtail$ npm run dev
> introcart@1.0.0 dev /home/jason/webapps/introcart_devtools/introcart_wagtail
> NODE_ENV=development webpack --progress --colors --watch --mode=development
10% building 0/1 modules 1 active ...
git log
erleichtert den Umgang.