Cześć, jaka jest różnica między plikiem package.json a package-lock.json? Rozumiem, że w tym pierwszym przechowywane są informacje na temat doinstalowywanych zewnętrznych paczek i wersji etc, a co z tym drugim? Commitować je oba na repo? Co się stanie w przypadku usunięcia któregoś? npm install generuje te pliki? Mógłby ktoś szczegółowo objaśnić ich przeznaczenie?
W package.json
trzymane są informacje na temat zależności do innych bibliotek, różne metadane typu autor, wersja i tak dalej. To plik, który opisuje twój projekt. Tworzysz go ręcznie przy tworzeniu projektu np. poprzez npm init
. Czyli poniekąd sam sobie już odpowiedziałeś na to pytanie. Natomiast package.lock.json
jest automatycznie generowany i przechowuje informacje o całym drzewie zależności, które zostało stworzone podczas npm install
. Wtedy przy następnym installu masz pewność, że drzewo zależności będzie identyczne, tak więc plik ten powinien znajdować się na repozytorium.
W przypadku usunięcia package.lock.json
zostanie on ponownie wygenerowany przy następnym installu, ale bardzo prawdopodobne jest to, że użyte zostaną inne wersje niektórych bibliotek. Usunięcie package.json
rozwali projekt do tego stopnia, że już installa nie zrobisz.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.