Зміст
Коротко
npm і pnpm представили staged publishing — механізм, за якого версія пакета спочатку потрапляє в registry у «чернетковому» стані, проходить перевірки, і лише потім стає доступною для встановлення за замовчуванням. У JavaScript Weekly #787 це подається як відповідь на інциденти supply chain: менше шансів, що зламаний або шкідливий tarball миттєво розійдеться мільйонами npm install.
Що сталося
Класичний npm publish робить версію одразу резолвимою: будь-хто з ^1.2.0 може отримати щойно залитий артефакт за секунди. Помилка в CI, компрометація токена чи зловмисний maintainer — і інцидент масштабується швидше, ніж команда встигає відкотити тег.
Staged publishing розриває цей момент. Пакет публікується в проміжному стані: його можна протестувати за прямим посиланням, порівняти checksum, прогнати smoke-тести — і лише потім «просунути» до публічної видимості.
Паралельно в екосистемі:
- pnpm 11.3 — політики довіри через
trustLockfile; - npm 12.0 — у стадії prerelease;
- Firefox 151 додав Web Serial, Storybook 10.4 — підтримку TanStack React.
Для теми supply chain staged publishing — центральний сигнал випуску #787.
Чому це важливо
Атаки на npm не новина: підміна імен пакетів, захоплення прав супровідника, шкідливі postinstall-скрипти. Staged publishing б'є в іншу точку — вікно між публікацією та масовим споживанням.
Якщо registry дає паузу, у security-команди з'являється час на перевірку до promote:
| Етап | Що дає staged publishing |
|---|---|
| До продвиження | Встановлення лише за явною версією |
| Перевірка | CI споживачів, сканування tarball |
| Після продвиження | Звичний semver-резолв |
Це не замінює двофакторну автентифікацію на акаунті супровідника, але зменшує масштаб помилкового релізу.
На практиці
- Слідкуйте за документацією npm/pnpm — зафіксуйте команди поетапної публікації у внутрішньому регламенті.
- Вбудуйте в CI — продвигайте версію лише при зеленому пайплайні.
- pnpm trustLockfile — узгодьте з політикою довіри пакетам.
- Споживачі — піньте версії на критичних шляхах; не гоніться за найсвіжішим range.
- npm 12 prerelease — тестуйте на staging registry.
Підсумок
Поетапна публікація — визнання того, що реліз npm-пакета — це продакшн-деплой. Має сенс закласти staged крок у release checklist, поки це опційно.