#1 Yarn - менеджер пакетов от facebook

poster
В этом уроке мы разберем основные возможности менеджера пакетов yarn, узнаем чем он отличается от npm. Создадим новый проект и установим зависимости с помощью yarn.
Понравилось? Поделитесь с друзьями!
Понравилось?
Поделитесь с друзьями!
Комментарии
Текст видео

Всем привет. На этой неделе компания facebook открыла в опенсорс свой пакетный менеджер для ноды, как замену npm. Этот пакетный менеджер называется yarn. И сейчас самое время разобрать, в чем отличия yarn от npm и вообще стоит ли его юзать. Собственно, вот список того, что реализовали в этом пакетом менеджере и что я считаю очень классным:

  1. Кеширует все скачанные пакеты локально, что дает возможным установку все пакетов без интернета
  2. npm предлагал использовать shrinkwrap. Это команда которая генерирует из файла package.json lock файл, где прописываются точные версии всех пакетов и их зависемости. Работает shrinkwrap достаточно грустно и с ним часто вылазят косяки. Вместо использования npm-shrinkwrap, yarn генерирует при каждой установке пакета свой lock файл, из которого будут устанавливаться все пакеты в следующий раз. То есть, наконец то у нас есть нормальный лок файл, генерирующийся на лету и правильно обновляющий чексумы.
  3. Также yarn строит очереди из пакетов на скачивание, чтобы скачивать их быстрее.
  4. И главное и самое важное для меня - это скорость установки пакетов. Она стала в 2-3 раза быстрее.
  5. Все пакеты он по прежнему тянет с npm.org, так, что здесь никаких измений нет.

Давайте попробуем.

Установим пакет командой

brew install yarn

Теперь давайте создадим новую папку для нашего проекта и напишем там

yarn init

Эта команда, как и npm init просто создает новый файл package.json.

Дальше, допустим, мы хотим установить express.

yarn add express

Yarn скачивает нам express с npm.org. И создает lock файл. Давайте посмотрим, как это выглядит. Вот у нас есть node_modules, package.json и yarn.lock. Если мы посмотрим на содержимое package.json, то увидим, что в dependencies у нас указан express, как было бы при использовании npm. Давайте откроем файл yarn.lock. Здесь все интереснее. У нас указана куча пакетов. То есть это все зависимости express и здесь везде указаны точные версии, поэтому если мы еще раз будем писать yarn, для того, чтобы установить все пакеты, то у нас установятся точные зависимости и не поломается проект, если у нас какая-то зависимость обновится.

Если вы хотите обновить все пакеты мы можем написать команду

yarn upgrade

Это удаляет полностью lock файл и переустанавливает все пакеты. Как мы видим, yarn upgrade просто перегенерировал нам yarn.lock и package.json.

Если же, например, мы хотим установить все пакеты заново напишем

rm -rf node_modules
yarn

Эта команда читает сейчас yarn.lock и устанавливает все пакеты. Как мы видим, это очень быстро. Вот оно их скачало, то так как express у нас уже скачан, то оно его взяло локально и засунуло его в package.json, node_modules и сохранило lock файл. И все это было за 2 секунды. На большом проекте реально видна скорость.

Если же мы хотим удалить какой-то пакет, например express, мы пишем

yarn remove express

Это удаляет пакет и все его зависимости. Теперь если мы откроем файл package.json, то мы увидим, что dependencies пустые, а если мы посмотрим yarn.lock, то увидим, что он пустой и в нем нет никаких записей.

Только зарегистрированные пользователи могут оставлять комментарии.  Войдите, пожалуйста.