@lad-tech/nsc-fast-install
v1.16.3
Published
Fast dependencies install for builds docker images of monorepo
Readme
📦 @lad-tech/nsc-fast-install
⚡️ Быстрая установка только нужных зависимостей при сборке микросервисов из большого моно-репозитория
❓ Зачем это нужно
В монорепозиториях:
- Все зависимости обычно указываются в корневом
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"
}⚠️ Возможные дефекты
❌ Вы указали
.ts, но не собрали проектОшибка:
outDir не найденилиstart.js не существует✅ Решение: выполните
tscилиnpm run buildперед вызовом❌
mainотсутствует или указывает на несуществующий файл✅ Решение: добавьте
mainвpackage.jsonсервиса или используйте--entryPoint❌ Некорректные импорты (например, с ошибками в 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| Не копировать, только показать |

