TurboRepo, запускать только некоторые рабочие области

это моя структура рабочих пространств:

  • Программы
    • веб-1 (следующий)
    • веб-2 (следующий)
    • веб-3 (следующий)
  • пакеты
    • пакет-1 (уи)
    • пакет-2 (реагировать утилиты)
    • пакет-3 (узловые утилиты)
  • услуги
    • сервис-1 (экспресс)
    • сервис-2 (экспресс)
    • сервис-3 (экспресс)
    • сервис-4 (экспресс)

Я хочу иметь возможность запускать "run dev:web-1" или "run dev:web-2" или "run dev:web-3" в котором всегда доступны ВСЕ пакеты включены одна или две услуги

Если я запущу «yarn dev» прямо сейчас, все запустится, и мне действительно придется установить --concurrency более высокое значение, а я не хочу этого делать.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
77
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Чтобы добиться желаемого поведения при запуске определенных сценариев разработки для веб-приложений, гарантируя, что все пакеты доступны и включены одна или две службы, вы можете использовать рабочие пространства Yarn и инструмент управления сценариями, например npm-run-all, или одновременно.

Для этого вам нужно установить необходимые зависимости:

yarn add -D npm-run-all

Обновите файл package.json в корневом каталоге, чтобы включить сценарии разработки:

json

"scripts": {
  "dev:web-1": "cd apps/web-1 && yarn dev",
  "dev:web-2": "cd apps/web-2 && yarn dev",
  "dev:web-3": "cd apps/web-3 && yarn dev",
  "dev:services": "run-p dev:service-1 dev:service-2",
  "dev:service-1": "cd services/service-1 && yarn dev",
  "dev:service-2": "cd services/service-2 && yarn dev",
  "dev:all": "run-p dev:packages dev:web-1 dev:web-2 dev:web-3 dev:services",
  "dev:packages": "yarn workspace pack-1 dev && yarn workspace pack-2 dev && yarn workspace pack-3 dev"
}

В соответствующих каталогах apps/web-X и services/service-X убедитесь, что сценарии dev пряжи правильно определены в соответствующих файлах package.json.

Теперь вы можете запустить следующие команды:

yarn dev:web-1, чтобы запустить сервер разработки для web-1.

yarn dev:web-2, чтобы запустить сервер разработки для web-2.

yarn dev:web-3, чтобы запустить сервер разработки для web-3.

yarn dev:services для запуска серверов разработки для сервисов-1 и сервис-2.

yarn dev:all для запуска всех серверов разработки, включая веб-приложения и выбранные службы.

Разделяя определенные сценарии разработки для каждого веб-приложения и службы и используя инструмент управления сценариями, такой как npm-run-all или одновременно, вы можете контролировать параллелизм запуска различных служб и обеспечивать доступность всех необходимых пакетов.

Не забудьте обновить сценарии и пути к файлам в соответствии со структурой и конфигурациями вашего конкретного проекта.

Спасибо. Мне это нравится, и я буду использовать его, если не смогу найти то, что ищу, но я уверен, что для этого должно быть специальное решение для турборепозитория.

André Alçada Padez 29.05.2023 00:19

Пожалуйста, да доказуемо, я тоже не нашел, извините, что не могу больше помочь.

Gonzalo Roque Cugiani 29.05.2023 00:26

Я опубликовал свой собственный ответ с решением, которое я нашел, копаясь в документах, если вам интересно

André Alçada Padez 29.05.2023 00:30
Ответ принят как подходящий

Итак, после более длительного изучения документации я обнаружил, что --filter flag можно установить несколько раз в команде turbo run. Итак, мое решение состояло в том, чтобы добавить скрипты в мой основной package.json

  "scripts": {
    "build": "turbo run build",
    "dev": "turbo run dev",
    "lint": "turbo run lint",
    "format": "prettier --write \"**/*.{ts,tsx,md}\"",
    "dev:web-1": "turbo run dev --filter=web-1 --filter=service-2 --filter=service-3",
    "dev:screen": "turbo run dev --filter=web-2 --filter=service-1"
  },

Другие вопросы по теме