2017-07-12 63 views
18

Po zaktualizowaniu mojego NPM do najnowszej wersji (od wersji 3.X do 5.2.0) i uruchomieniu npm install istniejącego projektu, otrzymuję automatycznie utworzony plik package-lock.json.Czy potrzebuję pakietu package-lock.json i package.json?

Mogę powiedzieć, że package-lock.json daje mi dokładne drzewo zależności w przeciwieństwie do package.json.

Z tej informacji wynika, że ​​package.json jest zbędny i nie jest już potrzebny.

Czy oba są niezbędne do działania NPM?
Czy można bezpiecznie używać tylko pliku package-lock.json?

Dokumenty na pakiet-lock.json (doc1, doc2) nic o tym nie wspominają.

Edit:

Po trochę więcej o tym myśleć, doszedłem do wniosku, że jeśli ktoś chce wykorzystać swój projekt ze starszej wersji KMP (przed 5.x) to jeszcze zainstalować wszystkie zależności, ale z mniej dokładnych wersji (wersja Patch)

+1

[link] (https://stackoverflow.com/questions/44297803/package-lock-json-role) –

Odpowiedz

11

strony npm dokumentów:

package-lock.json jest generowany automatycznie dla każdej woź- jony, gdzie npm modyfikuje drzewo node_modules lub package.json. Opisuje ono dokładnie wygenerowane drzewo, tak aby kolejne instalacje mogły generować identyczne drzewa, niezależnie od aktualizacji zależności pośrednich.

Z nie można kontrolować wersji zagnieżdżonych zależności. Nawet jeśli zablokujesz wersje swoich bezpośrednich zależności, nie możesz w 100% zagwarantować, że twoje pełne drzewo zależności będzie za każdym razem identyczne.

Z plikiem package-lock.json plik blokady blokuje wersję pełnego drzewa zależności. Pozwala to zagwarantować drzewo zależności dla innych programistów lub wersji, a jednocześnie umożliwia testowanie nowych wersji zależności (bezpośrednich lub pośrednich) przy użyciu standardowego package.json.

W związku z tym nie jest on nadmiarowy, ale zapewnia funkcjonalność do instalowania drzewa zależności w ściśle określonym środowisku.

+1

Podczas gdy to, co mówisz, jest prawdą, pytałem, czy możliwe jest użycie tylko 'pakietu-blokady. json', ponieważ po prostu dokładniej opisuje zależności projektu. –

+1

Tak, wystarczy mieć tylko plik package-lock.josn, ale podczas wykonywania dużych projektów, w których występuje duża liczba autorów i nie wiesz o ich środowisku, dobrze jest dołączyć oba pliki. –

+0

Przyznam ci nagrodę, jeśli mógłbyś edytować i powtórzyć ostatni akapit w swojej odpowiedzi. Nie jest w 100% jasne, co mówisz. –

0

Jeśli masz pytanie, czy plik blokujący powinien zostać zatwierdzony do kontroli źródła - powinien. Zostanie zignorowany pod pewnymi warunkami.

Znalazłem rozliczne żądania ściągania i historię zatwierdzania, więc jeśli widzisz, że to się zmieni, wykonaj osobne zatwierdzenie.

+1

Nie, nie pytałem o zatwierdzenie kontroli źródła. Tylko jeśli NPM potrzebuje ich ** w tym samym czasie ** do pracy. 'pakiet-lock.json' wydaje się bardziej gadatliwą wersją' pakiet.json', więc jest bezpieczne lub możliwe użycie tylko pliku blokady. –

+0

Rozumiem, opuściłem package.json w moich projektach, głównie po to, aby mieć miejsce na skrypty npm. –