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 installw 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.lockplik, aby zapisać dokładne wersje zależności. Posiadanie tego pliku w przędzy spowoduje użycie zapisanych wersji yarn.lockzamiast rozwiązywania wersji z package.json. Ta strategia gwarantuje, że nie wystąpi żaden z opisanych powyżej problemów.
yarn.lockjest podobny do npm-shrinkwrap.jsontego, który można utworzyć za pomocą npm shrinkwrappolecenia. Sprawdź tę odpowiedź, wyjaśniając różnice między tymi dwoma plikami.