Мигрирование с npm на yarn

Переход с npm для большинства пользователей окажется весьма простым процессом. Yarn использует такой же формат файла package.json что и npm, и может установить любой пакет из репозитория npm.

Если вы хотите попробовать Yarn на текущем npm проекте, просто выполните команду:

yarn

Yarn изменит структуру директории node_modules используя свой алгоритм разрешения, который совместим с алгоритмом разрешения модулей node.js.

Если возникла ошибка, пожалуйста сверьтесь со списком текущих ошибок или отправьте отчет в систему отслеживания ошибок Yarn.

Когда вы запустите yarn или yarn add <имя пакета>, Yarn создаст файл yarn.lock в корневой директории вашего проекта. Не нужно читать или понимать этот файл - просто добавьте его в систему контроля версий. Когда другие люди начнут использовать yarn вместо npm, yarn.lock файл будет гарантией того, что у них будут точно такие же зависимости, как и у Вас.

В большинстве случаев, после выполнения команд yarn или yarn add в первый раз, всё заработает сразу. В некоторых случаях, информация из файла package.json не достаточно точная, чтобы выявить зависимости. Детерминированный способ, которым Yarn выбирает зависимости, выльется в конфликт зависимостей. Обычно это происходит в больших проектах, когда npm install не срабатывает и разработчики часто удаляют директорию node_modules и собирают все заново. Если такое произошло, вначале попробуйте использовать npm, чтобы сделать версии зависимостей более точными, а потом переходите на Yarn.

Другие разработчики в проекте могут продолжать использовать npm, так что не обязательно переходить всем на Yarn в одно и тоже время. Разработчики использующие yarn получат точно такую же конфигурацию, как и у других, а разработчики использующие npm могут получить немного отличающуюся конфигурацию, что является намеренным поведением npm.

Позже, если вы решите что Yarn вам не подходит, вы можете вернуться к использованию npm не прибегая к каким-либо изменениям. Вы можете удалить файл yarn.lock если никто в проекте больше не будет использовать Yarn, но это не обязательно.

Если используется файл npm-shrinkwrap.json, есть вероятность получить другой набор зависимостей. Yarn не поддерживает файлы npm shrinkwrap, так как они не обладают достаточной информацией для детерминированного алгоритма Yarn. Если Вы используете эти файлы, то, возможно, самым простым вариантом будет перевести всех разработчиков в проекте одновременно на использование Yarn. Просто удалите существующий файл npm-shrinkwrap.json и проверьте вновь созданный yarn.lock.

Сравнение команд CLI

npm (v5) Yarn
npm install yarn install
(Н/Д) yarn install --flat
(Н/Д) yarn install --har
npm install --no-package-lock yarn install --no-lockfile
(Н/Д) yarn install --pure-lockfile
npm install [package] yarn add [package]
npm install [package] --save-dev yarn add [package] --dev
(Н/Д) yarn add [package] --peer
npm install [package] --save-optional yarn add [package] --optional
npm install [package] --save-exact yarn add [package] --exact
(Н/Д) yarn add [package] --tilde
npm install [package] --global yarn global add [package]
npm update --global                   yarn global upgrade                    
npm rebuild yarn install --force
npm uninstall [package] yarn remove [package]
npm cache clean yarn cache clean [package]
rm -rf node_modules && npm install yarn upgrade