Widzę, że są to dwa oddzielne pytania w jednym. Pozwól, że odpowiem na oba pytania.
Czy powinieneś zatwierdzić plik do repo?
Tak. Jak wspomniano w odpowiedzi ckuijjer, w Przewodniku migracji zaleca się włączenie tego pliku do repozytorium. Czytaj dalej, aby zrozumieć, dlaczego musisz to zrobić.
Co to jest yarn.lock
?
Jest to plik, który przechowuje dokładne wersje zależności dla twojego projektu wraz z sumami kontrolnymi dla każdego pakietu. W ten sposób przędza zapewnia spójność zależności.
Aby zrozumieć, dlaczego ten plik jest potrzebny, najpierw musisz zrozumieć, na czym polegał problem z oryginalnymi NPM package.json
. Po zainstalowaniu pakietu program NPM zapisze zakres dozwolonych wersji zależności zamiast konkretnej wersji (semver). Program NPM spróbuje pobrać aktualizację najnowszej wersji zależności w określonym zakresie (tj. Nieprzerwane aktualizacje poprawek). Z tym podejściem wiążą się dwa problemy.
Autorzy zależności mogą wydać aktualizacje wersji łatki, wprowadzając przełomową zmianę, która wpłynie na twój projekt.
Dwóch programistów działających npm install
w różnych momentach może uzyskać inny zestaw zależności. Co może spowodować, że błąd nie będzie odtwarzalny w dwóch dokładnie takich samych środowiskach. Może to na przykład powodować problemy ze stabilnością kompilacji serwerów CI.
Z drugiej strony przędza przyjmuje maksymalną przewidywalność. Tworzy yarn.lock
plik, aby zapisać dokładne wersje zależności. Posiadanie tego pliku w przędzy spowoduje użycie zapisanych wersji yarn.lock
zamiast rozwiązywania wersji z package.json
. Ta strategia gwarantuje, że nie wystąpi żaden z opisanych powyżej problemów.
yarn.lock
jest podobny do npm-shrinkwrap.json
tego, który można utworzyć za pomocą npm shrinkwrap
polecenia. Sprawdź tę odpowiedź, wyjaśniając różnice między tymi dwoma plikami.