Usunąłem go przypadkowo i od tego czasu wprowadziłem wiele zmian package.json
. npm install
Lub npm update
nie generują package-lock.json
już. Próbowałem wyczyścić pamięć podręczną npm i pamięć podręczną nvm, ale wydaje się, że nic nie działa. Wypróbowałem to na kilku wersjach Node.js (6.10.3 Node.js - 3.10.10 npm to jest to, na czym chciałbym, aby działał) i nie działa na żadnej.
Czy istnieje sposób, aby zmusić npm do wygenerowania package-lock.json
pliku?
node.js
npm
package-lock.json
Duże pieniądze
źródło
źródło
package-lock.json
generuje się automatycznie w npm począwszy od v5, w poprzednich wersjach plik blokady miał nazwęnpm-shrinkwrap.json
i został wygenerowany ręcznie za pomocąnpm shrinkwrap
polecenia.node 8.6.0
iz nimnpm 5.3.0
i zadziałało..gitignore
. Przypadkowopackage-lock.json
w.gitignore
jakiś sposób to zrobiłem, a ponieważpackage-lock.json
się wgit status
nim nie pojawiałem, wyrzucało mnie to.Odpowiedzi:
Domyślnie
package-lock.json
jest aktualizowany po każdym uruchomieniunpm install
. Jednak to może być wyłączone przez ustawienie globalniepackage-lock=false
w~/.npmrc
.Gdy
package-lock=false
ustawienie globalne jest aktywne, nadal możesz wymusićpackage-lock.json
aktualizację pliku projektu, uruchamiając:To polecenie jest jedynym pewnym sposobem wymuszenia
package-lock.json
aktualizacji.źródło
package-lock.json
.package-lock.json
jest obsługiwany tylko przez npm v5 +.W npm 6.x możesz użyć
Według https://docs.npmjs.com/cli/install.html
źródło
npm i --package-lock-only --only=production
nie wydaje się działać.package-lock.json
tylko dla zależności produkcyjnych. Ale jeśli uruchomisznpm i --only=production
, powinieneś zainstalować tylko zależności produkcyjne. Twój proces kompilacji może wyglądać tak: zainstaluj wszystkie zależności, skompiluj aplikację, usuńnode_modules
i zainstaluj tylko zależności produkcyjne.Odpowiadają na to komentarze;
package-lock.json
to funkcja dostępna wnpm
wersji 5 i nowszych.npm shrinkwrap
tak tworzysz plik blokujący we wszystkich wersjachnpm
.źródło
package-lock.json
pliki s nie są dokładnie tym samym, co pliki powłoki.npm-shrinkwrap.json
zostaną opublikowane w rejestrze, apackage-lock.json
nie.npm shrinkwrap
generujenpm-shrinkwrap.json
, ale jak generujeszpackage-lock.json
?--package-lock
Jak wyjaśniło kilka odpowiedzi, powinieneś uruchomić:
npm i
ALE jeśli to nie rozwiąże ...
Sprawdź wersję swojego
npm
pliku wykonywalnego. (Dla mnie był to 3.xx, który nie używapackage-lock.json
(w ogóle))npm -v
Powinien mieć co najmniej 5.xx (który wprowadził plik package-lock.json).
Aby zaktualizować npm na Lunix, postępuj zgodnie z tymi instrukcjami.
Aby uzyskać więcej informacji na temat plików pakietu, przeczytaj tę historię na medium .
źródło
Jeśli Twoja wersja npm jest niższa niż wersja 5, zainstaluj wyższą wersję, aby uzyskać automatyczne generowanie pliku package-lock.json .
Przykład: Uaktualnij obecny npm do wersji 6.14.0
Możesz wyświetlić najnowszą listę wersji npm według
źródło
Package-lock.json jest generowany ponownie przy każdym uruchomieniu
npm i
.źródło
node
inpm
. Myślę, że tonpm
> =5.0
inode
> =7.0
, ale nie jestem tego w 100% pewien.node 6.11.3
Dla mnie to nie działa .