16 юни 2025 / 3 мин. време за четене

Имплементация на Nx за споделени Angular и NestJS пакети в множество проекти

Case study photo 2

Въведение

Управлението на множество Angular и NestJS проекти, които споделят общи библиотеки, може да бъде предизвикателство. Дублирането на код, проследяването на зависимости и сложността на уголемяването на проектите могат да забавят разработката. Nx, мощен инструмент за монорепо, помага за оптимизиране на управлението на пакети, ускоряване на изграждането и ефективността на скалирането.

В това проучване разглеждаме как нашият екип успешно внедри Nx за Angular и NestJS проекти в корпоративен мащаб, като оптимизирахме работните процеси и повишихме продуктивността. Нашите споделени библиотеки включват:

  • Библиотека за стилизиране: Общи UI компоненти и теми.
  • Свързване с външни услуги: Стандартизирана комуникация с външни API-та.
  • Библиотека за таблици: Споделени таблични компоненти и функционалности, базирани на PrimeNG.
  • Автентикация и авторизация (Keycloak): Обединена сигурност за frontend и backend.
  • Kafka Одит и Логове: Централизирано хранилище за логове на събития за NestJS.
  • Библиотеки за работни процеси: Гъвкави frontend и backend модули за автоматизиране на процеси.
  • Деплоймънт пайплайн: Автоматизирано проследяване, изграждане и доставяне на засегнатите пакети.

С приемането на Nx успяхме да оптимизираме разработката, тестването и CI/CD процесите, като същевременно гарантирахме мащабируемост.

Защо избрахме Nx за управление на монорепо

Nx предоставя структурирано монорепо решение, което оптимизира изграждането, налага добри практики и улеснява ефективното управление на зависимости

Основните предимства, които забелязахме, включват:

  • Повторна употреба на код: Единен източник за всички библиотеки.
  • Оптимизирано деплойване: Само засегнатите пакети се деплойват, което намалява CI/CD времето.
  • Последователност и добри практики: Стандартизирани модели на разработка за всички проекти.

Графът на зависимостите на Nx, организацията на работното пространство и вградените инструменти гарантират, че всички проекти остават синхронизирани без излишни усилия.

Имплементация на споделени библиотеки

Библиотека за стилизиране

Създадохме повторно използваема библиотека за стилизиране, която включва:

  • SCSS теми.
  • UI компоненти (бутони, модали, контролери на форми).
  • Глобални настройки за типография и оформление.

Това осигури консистентност на UI и намали дублирането на код във всички Angular приложения.

Свързване с външни услуги

Тази библиотека стандартизира интеграцията с външни API-та, като предлага:

  • Повторно използваеми API класове.
  • Централизирано обработване на грешки.
  • Консистентна трансформация на данни между проектите.
Shared packages photo 3

Библиотека за таблици

Библиотека, базирана на PrimeNG DataTables, предлагаща:

  • Филтриране, сортиране и страниране.
  • Персонализирани дефиниции на колони.
  • Интеграция с бекенд услуги.

Това позволи на екипите да изграждат сложни таблици бързо, без допълнителна конфигурация.

Автентикация и авторизация с Keycloak

За сигурността внедрихме библиотеки за автентикация и авторизация както за frontend, така и за backend:

  • Frontend (auth-fe): Интеграция на Keycloak с Angular и обработка на JWT.
  • Backend (auth-be): Интеграция на Keycloak с NestJS и ролеви достъп.

Тези библиотеки осигуряват безпроблемна автентикация и контрол на достъпа във всички приложения.

Kafka Одит и Логове

Модул за централизирано хранилище на логове с Kafka, който осигурява:

  • Централизирано логване.
  • Структуриран формат на логовете.
  • Конфигурируеми събитийни топици.

Това осигури единен процес на логване за всички услуги, повишавайки проследимостта.

Библиотеки за работни процеси

Създадохме гъвкави workflow библиотеки, които предлагат:

  • Готови модели и контролери за управление на процеси.
  • Автоматични действия на база предварително зададени условия.
  • Процеси на одобрение с динамични правила.
  • Управление на състоянията за конфигурируеми работни процеси.

Тези библиотеки значително съкратиха времето за разработка на workflow-базирани приложения.

Оптимизация на деплойване с автоматизирани пайплайни

Управлението на множество библиотеки изисква ефективен CI/CD пайплайн. Нашата стратегия включваше:

  1. Проследяване на зависимости: Nx автоматично открива засегнатите библиотеки.
  2. Билдване само на засегнатите пакети.
  3. Инкрементално деплойване: Използване на Nx CLI и Jenkins пайплайни за бързи и стабилни релийзи.

Благодарение на Nx, успяхме да намалим времето за билдване и ускорим деплойването, което позволи по-бързо пускане на нови версии и промени.

Заключение и основни изводи

Внедряването на Nx за управление на споделени Angular и NestJS библиотеки донесе значителни предимства:

Nx се доказа като необходим инструмент за мащабируемо управление на монорепо проекти.

С Nx монорепо архитектурата, отключихме ефективност, мащабируемост и безпроблемно сътрудничество.

 

Сподели:

Може да харесате също:

AI Powered Onboarding
10 юни 20259 мин. време за четене

Изкуствен интелект в дигиталното внедряване: революционизиране на дигиталната проверка и откриване на активност

AI трансформира онбординга: Верификация и разпознаване на активност
how consulting firms drive business success
14 май 202510 мин. време за четене

Как консултантските фирми водят до бизнес успех. Защо да изберете DSS?

Как консултантските фирми постигат бизнес успех с експертни, технологично ориентирани консултации ис какво DSS се откроява