← Усі статті

npm і pnpm впроваджують поетапну публікацію пакетів

Staged publishing: спочатку чернетка в registry, перевірка, потім promote. Менший ризик supply chain; також trustLockfile в pnpm 11.3 і npm 12 prerelease.

Зміст

Коротко

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-резолв

Це не замінює двофакторну автентифікацію на акаунті супровідника, але зменшує масштаб помилкового релізу.

На практиці

  1. Слідкуйте за документацією npm/pnpm — зафіксуйте команди поетапної публікації у внутрішньому регламенті.
  2. Вбудуйте в CI — продвигайте версію лише при зеленому пайплайні.
  3. pnpm trustLockfile — узгодьте з політикою довіри пакетам.
  4. Споживачі — піньте версії на критичних шляхах; не гоніться за найсвіжішим range.
  5. npm 12 prerelease — тестуйте на staging registry.

Підсумок

Поетапна публікація — визнання того, що реліз npm-пакета — це продакшн-деплой. Має сенс закласти staged крок у release checklist, поки це опційно.