pnpm добавляет автоматическое управление средой выполнения JavaScript — закрепление Node/Deno/Bun для каждого проекта
Summary
pnpm выпустил функцию управления средой выполнения на уровне проекта в своей версии 2025 v10: вы можете объявить среду выполнения в package.json через devEngines.runtime (имя + версия), и pnpm автоматически загрузит и использует эту среду выполнения при запуске скриптов проекта. Это охватывает Node, Deno и Bun и предназначено для того, чтобы сделать скрипты разработчиков, CI-процессы и локальные инструменты детерминированными на разных машинах. (pnpm.io)
Why this matters for full‑stack teams
- Воспроизводимые среды разработчиков: Поведение скриптов (сборки, тесты, dev-серверы) часто различается, потому что члены команды используют разные версии Node/Deno/Bun. Закрепление сред выполнения в package.json и позволение pnpm управлять ими устраняет основную категорию проблем "работает на моей машине".
- Паритет CI и более быстрое введение в курс дела: CI-задачи могут использовать среду выполнения pnpm без отдельных шагов настройки nvm/Volta/asdf, что уменьшает количество скриптов настройки и трения для новых участников.
- Безопасность и гигиена цепочки поставок: В сочетании с контролем "безопасность по умолчанию" в pnpm v10 (заблокированные жизненные циклы скриптов, политики доверия) контролируемое обеспечение сред выполнения уменьшает случайные различия в выполнении и сюрпризы от особенностей версий среды выполнения или исправлений безопасности.
- Консистентность монорепозиториев и инструментов: Для монорепозиториев централизованное управление требованиями к среде выполнения избегает расхождений по пакетам и упрощает обновление или тестирование альтернативных сред выполнения (например, переключение выборочных проверок с Node на Bun).
- Нейтральный к поставщикам подход: Поскольку pnpm поддерживает несколько сред выполнения (Node, Deno, Bun), команды могут тестировать сценарии с несколькими средами выполнения из одной записи манифеста без установки отдельных менеджеров сред выполнения.
What to change — a short adoption checklist
-
Аудит скриптов и определение необходимых сред выполнения
- Каталогизируйте скрипты package.json и инструменты разработки (помощники по сборке, тестированию, развертыванию) и подтвердите, какие среды выполнения они требуют (Node, Deno, Bun) и минимальные версии.
-
Добавьте devEngines.runtime в package.json
- Пример:
{ "devEngines": { "runtime": { "name": "node", "version": "24.6.0" } } } - Зафиксируйте это в репозитории, чтобы CI и каждый разработчик получили одну и ту же среду выполнения.
- Пример:
-
Обновите CI рабочие процессы
- Замените произвольные установки сред выполнения (nvm/apt-get/скрипты установки) на поток, управляемый pnpm:
- Запустите pnpm install как обычно (pnpm загрузит или свяжет среду выполнения, когда будут вызваны скрипты).
- Кэшируйте глобальное хранилище pnpm и бинарные файлы среды выполнения между запусками CI для более быстрых сборок.
- Убедитесь, что исполнители имеют версию pnpm, которая поддерживает автоматическое управление средой выполнения (v10.x+).
- Замените произвольные установки сред выполнения (nvm/apt-get/скрипты установки) на поток, управляемый pnpm:
-
Настройте кэширование и оффлайн установки
- Кэшируйте хранилище pnpm и артефакты среды выполнения в CI.
- Для сборок в изолированных сетях заранее заполните хранилище pnpm или добавьте артефакт среды выполнения в ваш репозиторий артефактов.
-
Интеграция с локальными инструментами разработчиков
- Обновите devdocs и CONTRIBUTING, чтобы рекомендовать использовать pnpm для локальных запусков скриптов.
- По желанию сохраните совместимые обертки для разработчиков, которые предпочитают nvm/Volta (управление средой выполнения pnpm является дополнительным, а не обязательным).
-
Протестируйте пути обновления и отката
- Рассматривайте изменения версий среды выполнения как обновления зависимостей: создайте один PR, запустите CI и поэтапно разверните его по командам.
- Используйте канареечные ветки для проверки крупных обновлений среды выполнения.
Operational considerations and caveats
- Кэширование бинарных файлов: загрузки среды выполнения (по умолчанию) выполняются по запросу. Убедитесь, что CI кэширует или имеет внутреннее зеркало, чтобы избежать ненадежных внешних загрузок.
- Использование диска и глобальное хранилище: глобальное/виртуальное хранилище pnpm снижает дублирование, но планируйте рост хранилища, если вы закрепляете много разных версий среды выполнения по проектам.
- Совместимость с существующими менеджерами сред выполнения: среда выполнения, управляемая pnpm, будет сосуществовать с nvm/Volta/asdf; однако команды должны выбрать один источник правды для CI и документации, чтобы избежать путаницы.
- Позиция по безопасности: закрепление среды выполнения помогает воспроизводимости, но также требует от вас целенаправленного применения обновлений безопасности — используйте запланированные аудиты и сигналы в стиле dependabot для обновлений среды выполнения.
- Совместимость инструментов: подтвердите, что инструменты разработки (родные дополнения, бинарные модули npm) совместимы с закрепленным ABI/версией среды выполнения, которую вы выбрали.
Recommended next steps (first 48–72 hours)
- Добавьте devEngines.runtime в один небольшой, репрезентативный репозиторий и проверьте
pnpm run buildлокально и в CI. - Добавьте правила кэширования CI для хранилища pnpm и артефактов среды выполнения.
- Обновите документ о введении в курс дела команды, чтобы использовать pnpm для локальных установок и выполнения скриптов.
- Запланируйте политику обновления среды выполнения: кто утверждает крупные обновления среды выполнения и как их тестировать.
Bottom line
Автоматическое управление средой выполнения pnpm превращает выбор среды выполнения в первоклассную, версионированную часть вашего репозитория. Для команд полного стека это снижает расхождение сред, упрощает CI и дополняет улучшения безопасности pnpm — делая это низко затратным, но высокоэффективным изменением для внедрения в этом квартале. (pnpm.io)
Source: (pnpm.io)
Source
Читать дальше
Изменения в FedCM в Chrome 143: структурированные утверждения ID, более строгие метаданные клиента и обновления API
31 января 2026 г.Chrome 143 (опубликован 12 января 2026 года) изменяет поток идентификации FedCM: токены утверждения ID могут быть структурированным JSON, проверка client_metadata становится обязательной, и несколько полей API перемещаются/переименовываются — требуется миграция перед Chrome 145.
Undici CVE-2026-22036: неограниченная цепочка декомпрессии приводит к исчерпанию ресурсов — выпущены патчи
30 января 2026 г.14 января 2026 года в уведомлении о безопасности для undici (HTTP-клиент Node.js) описывается уязвимость неограниченной цепочки декомпрессии, которая может привести к высокому использованию CPU и памяти. Команды полного стека должны найти и обновить затронутые версии undici и добавить легкие защитные меры на уровне выполнения.
Уязвимость CSRF в Server Actions React Router / Remix (CVE-2026-22030)
29 января 2026 г.React Router и @remix-run/server-runtime устранили проблему CSRF средней степени серьезности, затрагивающую обработчики действий на стороне сервера и нестабильные действия сервера React — что полностековым командам необходимо проверить и исправить сейчас.