hostprofi.ru
Подобрать хостинг
Термин

Yarn

краткое определение

Yarn — менеджер пакетов для Node.js с детерминированными установками через yarn.lock и офлайн-кэшем. Разработан Facebook в 2016 году, поддерживает monorepo через Yarn Workspaces.

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

Как работает Yarn

Yarn разрешает дерево зависимостей из package.json и генерирует плоский список с точными версиями в yarn.lock. При следующей установке используется именно этот список — все разработчики и CI/CD-системы получают идентичный набор пакетов. Пакеты скачиваются параллельно и кэшируются локально (~/.yarn/cache) — повторная установка занимает секунды.

Yarn Classic vs Yarn Berry

ПараметрYarn 1.x (Classic)Yarn Berry (2.x+)
node_modulesКлассическая структураPnP: zip-архивы вместо папок
Скорость установкиБыстрее npm 5Ещё быстрее через PnP
WorkspacesПоддержкаРасширенная поддержка
СовместимостьВысокаяНекоторые пакеты несовместимы с PnP

Основные команды

yarn install              # установить зависимости из yarn.lock
yarn add react            # добавить зависимость
yarn add -D typescript    # добавить devDependency
yarn remove lodash        # удалить пакет
yarn run build            # запустить скрипт из package.json
yarn dlx create-react-app # запустить пакет без установки (аналог npx)

Yarn Workspaces

Monorepo-поддержка: несколько пакетов в одном репозитории с общим node_modules в корне. Конфигурация в корневом package.json:

"workspaces": ["packages/*", "apps/*"]

При установке зависимости в один workspace Yarn проверяет, нет ли её в других — дедупликация снижает размер node_modules.

История

Yarn разработан инженерами Facebook (Себастьян МакКензи, Кристоф Поллер и другие) и выпущен в октябре 2016 года. В то время npm 3–4 имел серьёзные проблемы: недетерминированные установки и низкая скорость. С 2018 года npm значительно улучшился: добавил package-lock.json (npm 5), ci-install и workspaces (npm 7). Yarn по-прежнему популярен в экосистемах React, Next.js и TypeScript.

Yarn в хостинге

На VPS при деплое Node.js-приложения: yarn install --frozen-lockfile гарантирует установку строго по yarn.lock без неожиданных обновлений. В Docker-образах рекомендуется использовать yarn install --production для исключения devDependencies. CI/CD (Jenkins, GitHub Actions) кэширует директорию ~/.yarn/cache между сборками — ускоряет пайплайн.

yarn.lock и воспроизводимость

Файл yarn.lock фиксирует точные версии всех зависимостей, включая транзитивные. При выполнении yarn install на любой машине или в CI/CD устанавливается идентичный набор пакетов. Отличие от package-lock.json: формат yarn.lock читаемее человеком и менее склонен к конфликтам слияния при работе нескольких разработчиков.

Команда yarn upgrade-interactive показывает список устаревших пакетов с возможностью интерактивного выбора — удобнее чем ручное обновление через npm. yarn why package-name показывает, почему пакет установлен и какие зависимости его требуют — полезно при аудите зависимостей перед деплоем на VPS.

Другие термины