Nub, полнофункциональный набор инструментов для Node.js на базе Rust

Nub, полнофункциональный набор инструментов для Node.js на базе Rust

Nub, это набор утилит, написанный на Rust, который расширяет базовый Node.js, добавляя функции из Bun/Deno без замены рантайма. Основные компоненты: файловый рантайм с поддержкой TypeScript/JSX без build-шагов, runner для скриптов (nub run) в 24 раза быстрее pnpm run, package executor (nubx) в 19 раз быстрее npx, и менеджер пакетов совместимый с pnpm. Автоматически разрешает и устанавливает версию Node из package.json#devEngines или .node-version. Поддерживает TypeScript enum/namespace, JSX, декораторы, полифиллы для Temporal, автоматическую загрузку .env-файлов. Быстродействие достигается благодаря встроенному Rust-бинарнику oxc для трансформации и N-API расширениям. Блокирует postinstall скрипты по умолчанию, проверяет пакеты на известные уязвимости через osv.dev. Совместим с GitHub Actions через nubjs/setup-nub.

Ключевые факты

  • Нативный Rust-бинарник дает 19-24x ускорение для npx, npm run и pnpm run команд
  • Поддержка TypeScript, JSX, enum, namespace и новых синтаксисов (using) без configuration на базе существующего Node
  • Автоматический download и кеширование нужной версии Node через package.json или .node-version файлы
  • Встроенная безопасность: блокировка postinstall по умолчанию, проверка на osv.dev, отказ от downgrade provenance
  • Drop-in замена для npm/pnpm с полной поддержкой workspace, фильтров и lifecycle hooks

Почему это важно

Node.js разработчики давно завидуют скорости Bun и удобству Deno, но массовое переключение сложно. Nub решает эту проблему incrementally, добавляет лучшие features к стандартному Node без lock-in и breaking changes. Rust-based tooling устраняет overhead Node-bootstrap в JavaScript-обертках (npx, npm run), что дает реальное ускорение в повседневной работе.

Кому это важно

Node.js разработчикам, которые хотят современные удобства (TypeScript first, быстрые скрипты) без риска; team lead'ам, заинтересованным в скорости CI/CD; разработчикам в large monorepo'нах, где каждая миллисекунда скрипта суммируется.

Как это применить

Установить через brew, npm или curl скрипт, заменить привычные команды: nub run вместо pnpm run, nubx вместо npx, nub install вместо npm/pnpm install. TypeScript файлы сразу работают через nub index.ts. В CI/CD использовать nubjs/setup-nub вместо actions/setup-node. Совместимость флага-за-флагом означает zero friction adoption.

Можно ли доверять

Show HN на Hacker News с 220 поинтами и 63 комментариями; MIT лицензия; автор colinmcd; GitHub репо открыт. Опирается на oxc (уважаемый SWC-конкурент) и стандартные N-API Node, а не пользовательские runtime-хаки. Безопасность задана консервативно: postinstall блокируется, версии пакетов проверяются по умолчанию.

Риски и подводные камни

Это еще молодой проект, поддержка edge-case Rust-расширений может отставать; потенциальный vendor lock-in, если автор потеряет интерес. Дополнительно: быстродействие пакет-менеджера зависит от сетевых условий (fetch из регистра), локальный cache может требовать cleanup. Совместимость с экзотичными postinstall хуками не гарантирована по дизайну.