#typescript #nestjs
TL;DR Используйте skipLibCheck и понимайте import
В чате @nest_ru задали вопрос "
Сталкнулся с такой проблемой, nest не может сбилдить проект внутри докера на слабой машине с 1gb памяти". По умолчанию Nest.js использует TypeScript для сборки. При неправильной конфигурации он может требовать больше 1GB памяти.Расскажу об оптимизации из реального проекта с подобной проблемой. На каждом этапе оптимизации удалялся папка build как при сборке Docker-а потом запускалась команда
tsc --diagnostics --project tsconfig.build.json, чтобы отследить метрики.0️⃣ Начальное состояние:
Memory used: 1006023K Total time: 17.70s
1️⃣ Проверяем в tsconfig.json включенный флага skipLibCheck. Его нет, это типичная ошибка. После включения:
Memory used: 858580K Total time: 15.08s
2️⃣ Смотрим какие импорты библиотек можно упростить. Например,
aws-sdk стоит 400Mb. На проекте она используется в одном файле. Делаем вот такой рефакторинг:import KinesisVideo from 'aws-sdk/clients/kinesisvideo';import KinesisVideoSignalingChannels from 'aws-sdk/clients/kinesisvideosignalingchannels';import type { AWSError } from 'aws-sdk/lib/error';// import { AWSError, KinesisVideo, KinesisVideoSignalingChannels } from 'aws-sdk';Memory used: 432743K Total time: 9.67s
Таким образом мы сократили запуск затраты памяти в 2.3 раза и ускорили билд на 8 секунд.