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

Имплементация на 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 монорепо архитектурата, отключихме ефективност, мащабируемост и безпроблемно сътрудничество.

 

Сподели:

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

null
7 юли 20259 мин. време за четене

Цялостен анализ на интегрираното управление на риска (IRM) на ServiceNow

ServiceNow IRM превръща риска във възможност чрез автоматизация, реални данни и успешни примери за съответствие и устойчивост
How to get snow dev instance
20 юни 20258 мин. време за четене

ServiceNow инстанция за разработчици и как да я получите

Изследвай ServiceNow с безплатна инстанция – перфектна за учене, тестване и създаване на приложения в безопасна среда.