Выбор ответа Middle Пакеты и зависимости обновлено

Скрипты зависимостей в pnpm 10

Вопрос

После перехода на pnpm 10 у пакета с нативной сборкой не выполнился postinstall, и он не работает. Почему?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: pnpm 10 не запускает скрипты зависимостей без явного разрешения. Скрипты установки это частый путь атак через цепочку поставок: вредоносная версия пакета исполняет код на машине разработчика и в CI.

Варианты ответа

  1. pnpm вообще не поддерживает нативные модули с node-gyp
  2. pnpm 10 не запускает скрипты зависимостей без явного разрешенияправильный ответ
  3. Нужно удалить pnpm-lock.yaml и установить заново
  4. postinstall выполняется только в npm ci, а pnpm его пропускает всегда

Разбор

Скрипты установки это частый путь атак через цепочку поставок: вредоносная версия пакета исполняет код на машине разработчика и в CI. Поэтому pnpm 10 по умолчанию их не запускает, а список доверенных пакетов хранится в конфигурации проекта.

  • Нативные модули в pnpm работают, им просто нужно разрешение на сборку.
  • Удаление lock-файла ничего не даст и сломает воспроизводимость.
  • postinstall своего проекта и разрешённых пакетов выполняется и в pnpm install.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.