Skip to content

Быстрая установка зависимостей (для сборки контейнеров) в моно репозитории

Notifications You must be signed in to change notification settings

lad-tech/nsc-fast-install

Repository files navigation

📦 @lad-tech/nsc-fast-install

NPM

⚡️ Быстрая установка только нужных зависимостей при сборке микросервисов из большого моно-репозитория


❓ Зачем это нужно

В монорепозиториях:

  • Все зависимости обычно указываются в корневом package.json;
  • У сервисов нет своих node_modules;
  • Это удобно для разработки, но неэффективно для сборки контейнеров.

🔥 Проблема

При COPY node_modules в Docker попадают все зависимости, даже если сервис использует только малую часть.

📦 Это:

  • Увеличивает размер образов;
  • Замедляет сборку;
  • Усложняет отслеживание неиспользуемых пакетов.

💡 Решение

nsc-fast-install:

  • Работает после сборки TS → JS;
  • Анализирует start.js и все require()/import;
  • Выявляет реально используемые зависимости;
  • Копирует только нужные пакеты в dist/node_modules.

🚀 Установка

npm i @lad-tech/nsc-fast-install -D

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

# указываем точку входа
npx nsc-fast-install --entryPoint services/AuthService/start.ts

# или указываем папку сервиса (ищет main из package.json)
npx nsc-fast-install --service services/AuthService

📌 Пояснение про entryPoint и main

Способ Как работает
--entryPoint Путь до исходного TS-файла (start.ts)
--service Указывает папку, внутри которой будет найдён main в package.json
main Должен вести на dist/.../start.jsсобранный JS-файл, не .ts
❗️Важно Анализ производится по JS, а не по TypeScript-коду

Пример:

// services/AuthService/package.json
{
  "main": "dist/AuthService/start.js"
}

⚠️ Возможные дефекты

  1. Вы указали .ts, но не собрали проект

    Ошибка: outDir не найден или start.js не существует

    ✅ Решение: выполните tsc или npm run build перед вызовом

  2. main отсутствует или указывает на несуществующий файл

    ✅ Решение: добавьте main в package.json сервиса или используйте --entryPoint

  3. Некорректные импорты (например, с ошибками в RegExp)

    ✅ Убедитесь, что транспиляция прошла успешно и код валиден (analyze выполняется Babel'ом)


🔧 Опции CLI

Флаг Тип Описание
--entryPoint string Путь до start.ts
--service string Путь до папки сервиса
--output string Папка назначения node_modules (по умолчанию — dist/)
--exclude string Исключить сервисы, через ,
--tsconfig string Имя tsconfig.json
--verbose boolean Расширенный лог
--dryRun boolean Не копировать, только показать

About

Быстрая установка зависимостей (для сборки контейнеров) в моно репозитории

Resources

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •