package.json a package-lock.json

0

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?

1

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1