⚡️ Быстрая установка только нужных зависимостей при сборке микросервисов из большого моно-репозитория
В монорепозиториях:
- Все зависимости обычно указываются в корневом
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 |
Путь до исходного TS-файла (start.ts) |
--service |
Указывает папку, внутри которой будет найдён main в package.json |
main |
Должен вести на dist/.../start.js — собранный JS-файл, не .ts |
| ❗️Важно | Анализ производится по JS, а не по TypeScript-коду |
-
❌ Вы указали
.ts, но не собрали проектОшибка:
outDir не найденилиstart.js не существует✅ Решение: выполните
tscилиnpm run buildперед вызовом -
❌
mainотсутствует или указывает на несуществующий файл✅ Решение: добавьте
mainвpackage.jsonсервиса или используйте--entryPoint -
❌ Некорректные импорты (например, с ошибками в RegExp)
✅ Убедитесь, что транспиляция прошла успешно и код валиден (analyze выполняется Babel'ом)
| Флаг | Тип | Описание |
|---|---|---|
--entryPoint |
string |
Путь до start.ts |
--service |
string |
Путь до папки сервиса |
--output |
string |
Папка назначения node_modules (по умолчанию — dist/) |
--exclude |
string |
Исключить сервисы, через , |
--tsconfig |
string |
Имя tsconfig.json |
--verbose |
boolean |
Расширенный лог |
--dryRun |
boolean |
Не копировать, только показать |
