Я бачу, що це два окремих питання в одному. Дозвольте відповісти на обидва.
Чи потрібно скористатись файлом у репо?
Так. Як згадується у відповіді ckuijjer, у Посібнику з міграції рекомендується включити цей файл у репо. Читайте далі, щоб зрозуміти, для чого це потрібно робити.
Що таке yarn.lock
?
Це файл, який зберігає точні версії залежностей для вашого проекту разом із контрольними сумами для кожного пакету. Це спосіб надання пряжі забезпечити узгодженість залежностей.
Щоб зрозуміти, для чого потрібен цей файл, спершу потрібно зрозуміти, яка проблема стояла за оригінальними NPM package.json
. Під час встановлення пакету NPM буде зберігати діапазон дозволених змін до залежності замість конкретної редакції (semver). NPM спробує отримати оновлену залежність останньої версії залежності в заданому діапазоні (тобто оновлення патчу, що не порушує). У цього підходу є дві проблеми.
Автори залежностей можуть випустити оновлення версій патчів, фактично вводячи переломні зміни, які вплинуть на ваш проект.
Два розробники, що працюють npm install
в різний час, можуть отримати різний набір залежностей. Що може призвести до відтворення помилки у двох абсолютно однакових середовищах. Це, наприклад, може викликати проблеми зі стабільністю для серверів CI.
Пряжа з іншого боку бере шлях максимальної передбачуваності. Він створює yarn.lock
файл для збереження точних версій залежності. Встановивши цей файл на пряжу, будуть використовуватися версії, що зберігаються, yarn.lock
а не розв’язувати версії з package.json
. Ця стратегія гарантує, що жодне з описаних вище питань не відбудеться.
yarn.lock
подібний до того, npm-shrinkwrap.json
що може бути створений npm shrinkwrap
командою. Перевірте цю відповідь, пояснюючи відмінності між цими двома файлами.