Używam npm do generowania zminimalizowanego / uglifikowanego css / js i wygenerowania javascript potrzebnego na stronach obsługiwanych przez aplikację django. W moich aplikacjach Javascript działa na stronie, aby tworzyć animacje, czasami wykonuję wywołania ajax, pracuję w ramach VUE i / lub współpracuję z css. Jeśli pakiet-lock.json ma pewną nadrzędną kontrolę nad tym, co znajduje się w pakiecie.json, może być konieczne, aby istniała jedna wersja tego pliku. Z mojego doświadczenia wynika, że albo nie wpływa to na to, co jest instalowane przez npm install, albo jeśli tak, to nie wpłynęło to negatywnie na aplikacje, które wdrażam według mojej wiedzy. Nie używam mongodb ani innych takich aplikacji, które są tradycyjnie cienkimi klientami.
Usuwam pakiet-lock.json z repozytorium, ponieważ instalacja npm generuje ten plik, a instalacja npm jest częścią procesu wdrażania na każdym serwerze, na którym działa aplikacja. Kontrola wersji węzła i npm odbywa się ręcznie na każdym serwerze, ale uważam, że są takie same.
Po npm install
uruchomieniu na serwerze zmienia pakiet-lock.json, a jeśli wystąpią zmiany w pliku, który jest rejestrowany przez repozytorium na serwerze, następne wdrożenie WONT pozwala wyciągnąć nowe zmiany z początku. Oznacza to, że nie można wdrożyć, ponieważ ściągnięcie zastąpi zmiany wprowadzone w pliku package-lock.json.
Nie można nawet zastąpić lokalnie generowanego pliku package-lock.json tym, co znajduje się w repozytorium (zresetować główny wzorzec dysku twardego), ponieważ npm będzie narzekać, gdy wyda polecenie, jeśli pakiet-lock.json nie odzwierciedla tego, co jest w repozytorium node_modules z powodu instalacji npm, tym samym przerywając wdrożenie. Teraz, jeśli to wskazuje, że w module node_modules zostały zainstalowane nieco inne wersje, to nigdy nie sprawiło mi to problemów.
Jeśli node_modules nie znajduje się na twoim repozytorium (i nie powinno tak być), pakiet-lock.json powinien zostać zignorowany.
Jeśli czegoś brakuje, proszę o poprawienie mnie w komentarzach, ale punkt, w którym wersjonowanie pochodzi z tego pliku, nie ma sensu. Plik package.json zawiera numery wersji i zakładam, że ten plik służy do budowania pakietów, gdy nastąpi instalacja npm, ponieważ kiedy go usuwam, instalacja npm narzeka w następujący sposób:
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'
kompilacja kończy się niepowodzeniem, jednak podczas instalowania modułów node_modules lub stosowania npm do kompilacji js / css nie zgłoszę żadnych skarg, jeśli usunę pakiet package-lock.json
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
obsługę.