Введение в монорепо с Yarn Workspaces

Монорепо — это хранилище, содержащее несколько проектов. Например, монорепо может содержать фронтенд-приложение и бэкенд-приложение. Внутри проекта также могут быть общие библиотеки. В монорепо очень легко вносить изменения в несколько проектов одновременно.

Монорепо — это не то же самое, что монолит. Когда вы вносите изменения в монорепо, вам нужно перестроить только те проекты, которые затрагиваются этим изменением. Это важный момент, поскольку он позволяет командам работать независимо друг от друга и улучшает опыт разработчиков. В монолите все выпускается вместе. В монорепо вы можете гибко решать, когда и что выпускать.

Настройте рабочие пространства в вашем package.json

Yarn Workspaces позволяет нам настроить несколько пакетов в одном репозитории.

Начните с создания package.json в корне проекта и добавьте следующее:

{
  "private": true,
  "workspaces": ["project-a", "project-b"]
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Каждый проект должен быть перечислен в массиве workspaces.

Затем создайте по одной подпапке для каждого рабочего пространства и добавьте package.json в эти подпапки. Давайте добавим несколько зависимостей, чтобы посмотреть, как Yarn справится с этим.

{
  "name": "@jmalvarez/project-a",
  "version": "1.0.0",
  "dependencies": {
    "lodash": "4.17.21",
    "@jmalvarez/project-b": "1.0.0"
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима
{
  "name": "@jmalvarez/project-b",
  "version": "1.0.0",
  "dependencies": {
    "lodash": "4.17.21"
  }
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Наша установка готова. Выполните теперь yarn install.

Как вы можете видеть, создана только одна папка node_modules для работы со всеми зависимостями. Нет никаких дублированных зависимостей. Более того, нам не нужно было использовать yarn link, чтобы потребовать project-b от project-a.

Как запускать команды

Чтобы добавить новые зависимости, достаточно выполнить соответствующую команду в подпапке проекта.

cd project-a
yarn add uuid
Войти в полноэкранный режим Выйти из полноэкранного режима

Другая возможность запуска команд из корневой папки — использование yarn workspace <workspace_name> <command>. Например, чтобы добавить новую зависимость из корневой папки, мы можем сделать следующее:

yarn workspace @jmalvarez/project-a add uuid
Войти в полноэкранный режим Выйти из полноэкранного режима

Если мы хотим выполнить одну и ту же команду в каждом рабочем пространстве, мы можем сделать это с помощью yarn workspaces run <command>. Например:

yarn workspaces run test
Войти в полноэкранный режим Выйти из полноэкранного режима

Ресурсы

  • Рабочие пространства Yarn
  • yarn workspaces | Yarn
  • рабочее пространство пряжи | Пряжа
  • Заблуждения о монорепо: Монорепо != Монолит

Оцените статью
devanswers.ru
Добавить комментарий