1. YCLIENTS
  2. Маркетплейс интеграций
  3. Плагинизация
  4. Руководство по созданию Frontend плагина
  5. Подготовка окружения
  6. Работа с монорепозиторием и Workspaces

Работа с монорепозиторием и Workspaces


Что такое Workspaces в npm

Флаг --workspaces в npm используется для работы с монорепозиториями (monorepos) и позволяет выполнять команды npm одновременно во всех рабочих пространствах (workspaces), определенных в корневом package.json.

Структура проекта

В проекте определены рабочие пространства через поле "workspaces" в корневом package.json:

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

Это означает, что проект содержит несколько пакетов в директориях:

  • apps/ — директория для приложений плагина.
  • packages/ — директория для общих пакетов.

Использование Workspaces

Выполнение команд

Когда вы используете флаг --workspaces в команде npm, например:

"build": "npm run build --workspaces"

Эта команда будет выполнена для всех пакетов в рабочих пространствах. То есть, если у вас есть несколько пакетов в директориях apps/ и packages/, команда npm run build будет запущена для каждого из них.

Флаг --if-present

В проекте также используется флаг --if-present, например:

"dev": "npm run dev --workspaces --if-present"

Этот флаг означает, что команда будет выполнена только для тех пакетов, где определена соответствующая скрипт-команда. Если в каком-то пакете нет команды dev, npm пропустит его без ошибки.

Преимущества использования Workspaces

Использование --workspaces позволяет:

  1. Управлять всеми пакетами в монорепозитории из одной точки.
  2. Упростить разработку и поддержку проекта.
  3. Обеспечить согласованность версий зависимостей между пакетами.
  4. Ускорить установку зависимостей за счет общего node_modules.

Доступные команды

В корневом package.json определены следующие команды для работы с workspaces:

  • npm run build — сборка всех пакетов и плагинов (использует Vite для сборки).
  • npm run dev — запуск режима разработки с помощью Vite.
  • npm run lint — проверка кода линтером (ESLint) во всех пакетах.
  • npm run typecheck — проверка типов TypeScript во всех пакетах.
  • npm run test — запуск модульных тестов (Vitest) во всех пакетах.
  • npm run format — форматирование кода с помощью Prettier.
  • npm run clean — очистка всех node_modules и dist директорий.

Все команды используют флаг --workspaces --if-present, что означает:

  • Команды выполняются для всех пакетов в workspaces.
  • Если пакет не имеет определенной команды, он пропускается без ошибки.

Требования к окружению

  • Node.js >= 18.0.0.
  • npm >= 9.0.0.

Структура директорий

frontend/
├── apps/            # Приложения плагина (color-picker)
├── packages/        # Общие пакеты (utils)
└── tools/           # Инструменты разработки (typescript, vite)

Обновление зависимостей

Для обновления всех зависимостей в монорепозитории:

cd frontend
npm update

Очистка и переустановка

Если возникли проблемы с зависимостями:

cd frontend
npm run clean
npm install
Предыдущая статья Установка зависимостей
Следующая статья Контракт и зоны интеграции