Dla modyfikacji npm node_modules drzewa lub dowolnego package.json akcji, package-lock.json zostanie automatycznie wygenerowany. Opisuje dokładnie drzewo, które jest generowane, aby kolejne instalacje mogły generować to samo drzewo, niezależnie od pośrednich aktualizacji zależności.
Ten plik przeznaczony jest do przesyłania do repozytorium kodu źródłowego i jest dostępny do różnych celów:
Opisuje pojedynczą reprezentację drzewa zależności, aby zagwarantować, że współpracownicy zespołu, wdrożenia i ciągła integracja zapewniają instalację dokładnie tych samych zależności.
Zapewnij użytkownikom narzędzie do "przejścia" do stanu poprzedniego node_modules bez konieczności zatwierdzania samego katalogu.
Ułatwić większą widoczność zmian w drzewie dzięki czytelnym różnicom w kontroli kodu źródłowego.
I zoptymalizować proces instalacji, pozwalając npm pominąć duplikatowe rozwiązywanie metadanych wcześniej zainstalowanych pakietów.
Kluczowym szczegółem package-lock.json jest to, że nie można go wydać i zostanie zignorowany, jeśli zostanie znaleziony poza pakietem najwyższej klasy. Dzieli format z npm-shrinkwrap.json, to zasadniczo ten sam plik, ale pozwala na publikację. Nie zaleca się tego, chyba że wdrożysz narzędzie CLI lub w inny sposób wykorzystasz proces wydania do stworzenia pakietu produkcyjnego.
Jeśli zarówno package-lock.json, jak i npm-shrinkwrap.json istnieją w katalogu głównym pakietu, package-lock.json zostanie całkowicie zignorowany.
Oryginalny link: https://docs.npmjs.com/files/package-lock.json
Od czasu wydania npm 5.x rola blokady 5.6.0 zmieniała się wielokrotnie, a teraz wiele małych białych tekstów w Internecie utknęło w poprzednim tłumaczeniu dokumentów.
Zaktualizowałem z npm3.x na npm5, ale okazało się, że zjawisko podczas wykonywania 'npm i' nie było zgodne z artykułem popularnonaukowym w Internecie.
Wspomniano, że niezależnie od tego, jak package.json plik zostanie zmodyfikowany, jeśli npm i jest wielokrotnie wykonywane, npm zostanie pobrane zgodnie z informacjami o wersji opisanej w pliku blokady.
Wspomniano też, że podczas powtarzania npm i npm ignoruje informacje o blokadzie i pobiera moduł aktualizacji zgodnie z informacjami o wersji wersji semantycznej pakietu w package.json (blokada wydaje się bezużyteczna).
**Według informacji, zasady npm i zmieniały się trzykrotnie od czasu wydania npm 5.0. **
1. Wersja npm 5.0.x, bez względu na zmiany package.json, npm i będzie pobierany zgodnie z plikiem blokady
package-lock.json plik nie aktualizowany po zmianie package.json pliku · Numer #16866 · npm/npm https://github.com/npm/npm/issues/16866 Ten problem dotyczy właśnie tego problemu, oczywiście zmieniłem package.json ręcznie, więc może dasz mi pakiet aktualizacji! A potem prowadzi to do problemu 5.1.0...
2. Po wersji 5.1.0 instalacja npm zignoruje plik blokady, aby pobrać najnowszy npm
Potem ktoś poruszył ten problem, dlaczego blokada pakietów jest ignorowana? · Numer #17979 · npm/npm https://github.com/npm/npm/issues/17979 Skarga ostatecznie przekształciła się w zasady po wersji 5.4.2.
3. Dlaczego po wersji 5.4.2 blokada pakietów jest ignorowana? · Numer #17979 · npm/npm https://github.com/npm/npm/issues/17979
Mówiąc ogólnie, jeśli package.json zostanie zmieniony, a package.json różni się od pliku blokady, npm pobiera najnowszy pakiet zgodnie z numerem wersji i semantycznym znaczeniem pakietu podczas wykonywania 'npm i' i aktualizuje go na blokadę.
Jeśli oba są w tym samym stanie, to uruchamiając npm i pobieram zgodnie z blokadą, niezależnie od tego, czy faktyczna wersja pakietu jest nowa, czy nie.
|