#node.js #continuous-integration #yarnpkg #monorepo #yarn-workspaces
Вопрос:
Я работал над проектом с использованием монорепо и использованием рабочих пространств пряжи.
Он состоит из нескольких приложений и общих, например
- «сервер» (приложение TS/Node),
- «веб» (приложение React с интерфейсом Material),
- «общий» (общий код JS , используемый во всех приложениях) и т. Д.
Мне трудно понять, как должен выглядеть процесс сборки и запуска в этом случае.
Что я делаю, так это:
- Здание «общее»
- Создание каждого приложения индивидуально («сервер», «веб» и т.д.)
- Затем , чтобы запустить его, мне нужно
node_modules
, поэтому я копирую его из корня моего монорепо в каждую сборку приложения. - Затем я доставляю этот встроенный код node_модули на удаленные серверы (каждое приложение отдельно), где запускаю приложение.
Проблема здесь в том, что root node_modules
содержит зависимости всех приложений, которые у меня есть в моем монорепо, например, MaterialUI, который вообще не нужен для приложения узла «сервер». В результате каждое готовое к отправке приложение весит более 400 МБ, что слишком много.
Что я пробовал: Моим первым шагом было то, что я мог бы переместить каждое приложение из monorepo для целей сборки и создавать его индивидуально (ожидая получить только то, что указано в их собственном пакете.json), но они, как я быстро понял, зависят от commons из monorepo, поэтому приложения нельзя создавать таким образом.
Поэтому мне кажется, что я что-то упускаю и делаю это неправильно, не мог бы кто-нибудь, пожалуйста, помочь мне?
Спасибо!