Ответ 1
На бумаге Yarn и NPM 5 выглядят почти эквивалентными. Оба они имеют детерминированные файлы блокировки и почти совместимы друг с другом по функциональности. Некоторые скажут, что пряжа была катализатором для инноваций НПМ.
Однако, после того, как я испытал NPM 5 в течение месяца, моя команда решила перейти к Yarn.
Технически NPM имеет "более детерминированный" файл блокировки, в котором есть теоретическая гарантия того, что в версиях NPM NPM будет создавать ту же самую папку node_modules
. С другой стороны, прямая точность подъема/упорядочения зависимостей зависит от версии Yarn и может меняться в разных версиях пряжи. В общем, это очень мало влияет.
Зачем использовать пряжу? Слияние и надежность.
Пряжа сделала небольшой компромисс между детерминизмом, чтобы достичь гораздо более простого файла yarn.lock
, который легче слить. Если вы являетесь сольным разработчиком, это, вероятно, не повлияет на вас, но если вы работаете в команде с несколькими сотрудниками, совершающими изменения зависимостей, это быстро становится огромной проблемой. НПМ package-lock
практически не объединяется, и вы в конечном итоге должны генерировать или бороться. С другой стороны, с пряжей, слияния легко и предсказуемо.
Смотрите: https://yarnpkg.com/blog/2017/05/31/determinism/
В качестве побочного примечания мы также обнаружили, что пряжа более надежна в среднем.