Po zaktualizowaniu mojego NPM do najnowszej wersji (z 3.X do 5.2.0) i uruchomieniu npm install
na istniejącym projekcie, otrzymuję automatycznie utworzony package-lock.json
plik.
Mogę powiedzieć, że package-lock.json
daje mi dokładne drzewo zależności, w przeciwieństwie do package.json
.
Na podstawie samych tych informacji wydaje się, że package.json
są one zbędne i nie są już potrzebne.
Czy oba są niezbędne do działania NPM?
Czy użycie samego package-lock.json
pliku jest bezpieczne lub możliwe ?
Dokumentacja na package-lock.json ( doc1 , doc2 ) nic o tym nie wspomina.
Edycja :
Po dłuższym przemyśleniu doszedłem do wniosku, że jeśli ktoś chciałby używać twojego projektu ze starszą wersją NPM (przed 5.x), to nadal instalowałby wszystkie zależności, ale z mniej dokładnymi wersjami (wersje łatek)
źródło
Odpowiedzi:
Czy potrzebujesz obu
package-lock.json
ipackage.json
? Nie .Czy potrzebujesz
package.json
? Tak .Czy możesz mieć projekt tylko z
package-lock.json
? Nie .package.json
Jest używany przez ponad zależnościami - jak definiowanie właściwości projektu, opis, autor i licencja informacyjnych, skrypty, itppackage-lock.json
są wykorzystywane wyłącznie do zamka zależności do liczby określonej wersji.źródło
package-lock.json
: rejestruje dokładną wersję każdego zainstalowanego pakietu, co pozwala na ich ponowne zainstalowanie. Przyszłe instalacje będą mogły zbudować identyczne drzewo zależności.package.json
: rejestruje minimalną wersję, której potrzebuje aplikacja. Jeśli zaktualizujesz wersje określonego pakietu, zmiana nie zostanie tutaj odzwierciedlona.źródło
package.json
zapisuje minimalną wersję wymaganą przez aplikację, a package-lock.json zapisuje dokładną wersję każdego zainstalowanego pakietu, to mam dziwną sytuację, w której moduł jest ustawiony na wersję 0.112.1 w pakiecie .json i 0.110.0 w pakiecie-lock.json ...Jeśli twoje pytanie dotyczy tego, czy plik blokady powinien być przypisany do kontroli źródła - powinien. W pewnych okolicznościach zostanie zignorowany.
Zauważyłem, że wzdęcia są żądaniami ściągnięcia i historią zatwierdzeń, więc jeśli zauważysz, że to się zmienia, zrób dla tego osobne zatwierdzenie.
źródło
package-lock.json
wydaje się być bardziej szczegółową wersją programupackage.json
, więc jest bezpieczne lub możliwe użycie tylko pliku blokady.package-lock.json
kontroli wersji.Dokładniejsze i szczegółowe wyjaśnienie powodu utrzymywania pliku package-lock.json można znaleźć tutaj
źródło