Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Рейтинг: 62.3% · 11 голосов
Frontend и backend разработка: JavaScript, TypeScript, React, Next.js, Vue, Node.js, PHP, REST и GraphQL API, вёрстка HTML/CSS и современные веб-приложения.
Ответить
Аватара пользователя
async2025
Сообщения: 44
Зарегистрирован: 13 май 2026, 02:57

Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Сообщение async2025 »

Уронили прод вечером в пятницу из-за рассинхрона package-lock.json и фантомных зависимостей, делюсь чтобы вы так не делали. Коротко: один разраб закоммитил package.json без обновлённого лока, CI собрался на закешированных node_modules и прошёл зелёным, а прод собрался с чистого листа и подтянул минорку транзитивной зависимости где сломали поведение. Полтора часа искали, потому что локально не воспроизводилось ни у кого. npm ci надо было ставить в пайплайн с самого начала, а не npm install.
👍3 ❤️ 🔥1 😄 🤔
✔ Лучший ответ сформирован автоматически — guardia
Расскажу что в итоге внедрили после разбора, может кому пригодится целиком. Первое, в CI везде npm ci, никаких install, плюс отдельный шаг npm ci dry-run на проверку что лок консистентен ещё до сборки. Второе, включили npm config save-exact для критичных пакетов и перешли на ренжи без caret там где боялись минорок, обновляем осознанно через renovate с прогоном тестов. Третье, кеш переделали, тепе…
Перейти к ответу →
Аватара пользователя
trasche10
Сообщения: 19
Зарегистрирован: 11 май 2026, 18:00

Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Сообщение trasche10 »

@async2025, npm install в CI это классические грабли, он же лок может перезаписать молча. только npm ci, он падает если лок не сходится с package.json. это база, странно что у вас не было
👍 ❤️1 🔥3 😄 🤔
Аватара пользователя
photon1952
Сообщения: 13
Зарегистрирован: 11 май 2026, 01:28

Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Сообщение photon1952 »

+1 к npm ci. и кеш node_modules между джобами зло, кешируйте ~/.npm а не node_modules
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
solidity2024
Сообщения: 40
Зарегистрирован: 11 май 2026, 02:34

Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Сообщение solidity2024 »

async2025 писал(а):подтянул минорку транзитивной зависимости где сломали поведение
вот поэтому caret диапазоны (^) в проде это рулетка. лок должен быть зафиксирован и закоммичен всегда, тогда минорка сама не приедет. У вас по сути лок не был источником истины, вот и прилетело. Проблема не в npm а в процессе.
👍3 ❤️ 🔥1 😄 🤔
Аватара пользователя
postgres2
Сообщения: 66
Зарегистрирован: 11 май 2026, 17:56

Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Сообщение postgres2 »

переходите на pnpm и забудьте про фантомные зависимости как класс. строгий node_modules, симлинки, ничего лишнего не доступно чего нет в package.json. мы год на pnpm, таких сюрпризов ноль
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
dmsmith
Сообщения: 26
Зарегистрирован: 11 май 2026, 08:37

Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Сообщение dmsmith »

guardia писал(а):заморозка деплоев после 16:00 в пятницу
единственный по-настоящему рабочий пункт во всём списке, остальное техника, а это спасает от человеческого фактора. read-only friday топ
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
guardia
Сообщения: 49
Зарегистрирован: 11 май 2026, 14:59

Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Сообщение guardia »

✔ Лучший ответ — сформирован автоматически
Расскажу что в итоге внедрили после разбора, может кому пригодится целиком. Первое, в CI везде npm ci, никаких install, плюс отдельный шаг npm ci dry-run на проверку что лок консистентен ещё до сборки. Второе, включили npm config save-exact для критичных пакетов и перешли на ренжи без caret там где боялись минорок, обновляем осознанно через renovate с прогоном тестов. Третье, кеш переделали, теперь кешируется только npm store по хешу от package-lock, при изменении лока кеш инвалидируется, фантомного состояния больше нет. Четвёртое, выкатка по фича-флагам и канарейке, новый код едет на 5 процентов трафика, если метрики ошибок растут откат автоматом за минуту. Пятое, заморозка деплоев после 16:00 в пятницу, чисто организационно но нервы целее. По итогу за три месяца ни одного похожего инцидента. Renovate сначала бесил пачками пиаров, настроили группировку и автомёрж для патчей с зелёными тестами, стало терпимо.
👍 ❤️2 🔥 😄 🤔
Аватара пользователя
secret7260
Сообщения: 13
Зарегистрирован: 19 май 2026, 22:58

Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Сообщение secret7260 »

renovate с автомёржем патчей это сам себе яму копаешь, патч тоже ломают регулярно. лучше дайджест раз в неделю и руками глянуть changelog
👍1 ❤️ 🔥1 😄 🤔
Аватара пользователя
raspberryops
Сообщения: 8
Зарегистрирован: 29 май 2026, 18:04

Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали

Сообщение raspberryops »

пятница вечер деплой, ну вы сами виноваты хех
👍 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Веб-разработка»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость