Как ускорить npm install на CI/CD?

npm install у нас занимает 3-4 минуты на GitHub Actions. Проект большой, ~800 зависимостей. Кеширование node_modules уже настроено. Что ещё можно сделать?

Степанов Дмитрий9 марта 2026 г.

2 ответа

Ответить
2
Принятый ответ

Переходи на pnpm — он в 2-3 раза быстрее за счёт хардлинков. Или хотя бы npm ci вместо npm install (он не обновляет lock-файл). Ещё можно: frozen-lockfile, кешировать .npm вместо node_modules, и использовать более мощный раннер.

0

Ещё один заметный приём — отключить лишние проверки и скрипты. Добавь в команду флаги --no-audit и --no-fund: они экономят время на обращении к реестру. Если в проекте нет обязательных postinstall-скриптов, можно добавить --ignore-scripts, но осторожно — он ломает сборки, которые компилируют нативные модули.

Дальше — кеш. Кешировать node_modules плохо, потому что он инвалидируется при любом изменении. Лучше кешировать содержимое ~/.npm: он общий для всех зависимостей, а ключ кеша ставь на хеш package-lock.json. Тогда при изменении одной зависимости ты всё равно получишь hit по остальным пакетам. Используй restore-keys, чтобы при изменении lock-файла брать старый кеш и докачивать только разницу.

И ещё: разбей установку на devDependencies и production. На CI для тестов и линта нужны все, но на этапе сборки образа можно ставить только prod-зависимости через npm ci --omit=dev. Это сокращает время на 30-50%.

Ваш ответ

Минимум 20 символов (0/20)

, чтобы ответ был привязан к аккаунту

Похожие вопросы