⚡️ Быстрая установка только нужных зависимостей при сборке микросервисов из большого моно-репозитория
В монорепозиториях:
- Все зависимости обычно указываются в корневом
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 |
Не копировать, только показать |