世界を動かす技術を、日本語で。

Show HN: Nub – Node.js用のバンのようなオールインワンツールキット

2026年6月24日原文(github.com)

概要

Nub は、Node.jsを拡張する オールインワンツールキットBun のような開発体験を Rust製バイナリ で提供。 Node.js本体を置き換えず、 高速 ・高互換性・ロックインなし。 ランタイム、スクリプト実行、依存管理、Nodeバージョン管理を一括提供。 npm/pnpm/yarn/Bunとの 高い互換性 を維持。

Nubの特徴とコマンド概要

  • Node.js拡張型ツールキット、Node本体はそのまま利用
  • TypeScriptファースト のランタイム
    • nub index.ts でTypeScript/JSXを即時実行
  • スクリプト高速実行
    • nub run dev でpnpm runの24倍速
  • パッケージ実行高速化
    • nubx prisma generate でnpxの19倍速
  • 依存インストール高速化
    • nub install でpnpm installの2.5倍速
  • ネイティブウォッチモード
    • nub watch src/server.ts で自動再起動
  • Nodeバージョン管理
    • nub node install 26 でバージョン指定・自動インストール
  • 自己アップデート
    • nub upgrade でワンクリック更新
  • ロックイン・独自APIなし
    • Node.jsの標準API・エコシステムをそのまま利用

Nubと既存ツールの対応表

  • nub <file> → node, tsx, ts-node, dotenv-cli
  • nub run <script> → npm run, pnpm run
  • nubx → npx, pnpm dlx / exec
  • nub install → npm, pnpm
  • nub watch → nodemon, node --watch, tsx watch
  • nub node → nvm, fnm, n, volta
  • nub pm → corepack

インストール方法

  • macOS/Linux curl -fsSL https://nubjs.com/install.sh | bash
  • Windows (PowerShell) irm https://nubjs.com/install.ps1 | iex
  • Homebrew brew install nubjs/tap/nub
  • npm/pnpm/yarnグローバル npm install -g --ignore-scripts=false @nubjs/nub
  • GitHub Actions対応 - uses: nubjs/setup-nub@v0actions/setup-nodeと置き換え可能

ファイルランナー — nub <file>

  • .js, .ts, .jsx, .tsx などを即時実行
  • node互換のフラグ・環境変数対応
  • TypeScriptフルサポート (enum, namespace等)
  • 拡張子省略importtsconfig.json#paths対応
  • JSX/TSX対応
  • デコレーター対応
  • .env自動ロード (Next.js/Vite同等)
  • .yaml, .toml, .jsonc等のデータローダ内蔵
  • 最新構文・APIの自動ポリフィル/アンフラグ
  • tsx比2.9倍高速な起動

Nodeバージョン自動推論・プロビジョニング

  • プロジェクトに必要なNodeバージョンを自動判定・インストール
  • 優先順:NODE_EXECUTABLEpackage.json#devEngines.node-version.nvmrcpackage.json#engines
  • Nub自身がNodeをダウンロード・キャッシュ

モダンAPI自動対応

  • Node未実装APIは自動ポリフィル
    • 例:Temporal, URLPattern, RegExp.escape, Promise.try, navigator.locksなど
  • 実験的APIは自動アンフラグ
    • 例:vm.Module, ShadowRealm, WebSocket, EventSource, node:sqliteなど
  • Nodeバージョンに応じて自動切り替え

ウォッチモード

  • 依存グラフ解析による自動再起動
  • .env*, tsconfig.json, package.json等も監視
  • Node標準の--watchエンジンを利用、出力も保持

スクリプトランナー — nub run

  • npm/pnpm run完全互換・超高速
  • Rustバイナリで起動ラグほぼゼロ(14ms)
  • pre/post hooks, npm_*環境変数完全対応
  • workspace, --filter, --parallel等pnpm機能全対応
  • ローカルnode_modules/.binを自動パス追加

パッケージランナー — nubx / nub dlx

  • npx/pnpm dlx完全互換・超高速
  • ローカルbin優先、未インストール時はレジストリから即時取得・実行
  • Node多重起動ペナルティなし
  • pnpm exec/dlxの全フラグ対応
  • ワークスペース内binの自動解決

パッケージマネージャ — nub install

  • Aubeエンジン採用の超高速パッケージ管理
  • pnpm互換CLI (フラグ・コマンド全対応)
  • npm/pnpm/yarn/bunのロックファイル・設定自動認識
  • postinstallブロック・既知の悪質パッケージ自動検出
  • リリース直後パッケージ自動拒否(24時間)
  • compat-modeで既存マネージャの設定・環境変数を尊重
  • .npmrc, npm_config_*等も適切に読込

パッケージメタマネージャ — nub pm

  • Corepack互換のパッケージマネージャプロビジョニング
  • nub pm shim でグローバルshim登録
  • プロジェクトごとにnpm/yarn/pnpmのバージョン自動切替・実行
  • Corepack本体不要、Rust製で高速・安全

Nodeバージョンマネージャ — nub node

  • Nodeバージョンの手動管理も可能
    • nub node install <version> で任意バージョン取得
    • nub node ls でキャッシュ済み一覧表示
    • nub node uninstall <version> で削除
    • nub node pin <version> でプロジェクト固定

ライセンス・作者

  • MITライセンス
  • 作者: Colin (Nubの開発者)
  • Node.jsの--requireプリロードフックモジュール解決フック で純粋なNode拡張
  • oxcトランスパイラ をNode-APIアドオンとして組み込み
  • Node.js本体・標準APIをそのまま利用、完全な後方互換性

Nub はNode.jsエコシステムの既存資産を活かしつつ、 BunやDenoの快適さ・高速さ を現場に持ち込む、 実用志向の次世代ツールキットロックインなし・高互換・爆速。Node.jsユーザーにとって今最も注目すべき選択肢。

Hackerたちの意見

モノレポをnubに移行するPRをマージしたばかりなんだけど、問題ゼロで超速かったよ。

そのPRが投稿されてから1時間以内に、共有モノレポを移行するPRをマージしたの?

すごく賢いね。Rustで書かれてるなら、移行をvibeコーディングしても顧客を失うことはないよね ;)

彼らはOpenAIに買収されて、プロジェクトをZigに変えるんじゃないかな。

すでにバイブコードされてて、最初から顧客がいないなら、なおさらいいよね。

Bunに顧客がいたの?

このプロジェクトはもうすでにかなりバイブコードされてるよ。Claudeはリポジトリの2番目の貢献者なんだ。

うーん、「Rustで書かれている」って何か意味あるのかな?シェルスクリプトとpackage.jsonで同じ機能が実現できると思ってたんだけど。

アプリをバイブコーディングされたランタイムで動かすのと、ローカルのDXツールを使うのは別物だよね。

これをTwitterで見て、めっちゃいいと思ったよ。コリン、いい判断だね。プロジェクトがどんどん盛り上がるといいな!

既存の技術を受け入れるのは尊敬する。悪いバージョンを書き直すよりずっといいよね。もし代替手段の構築に全力を注いでたら、今頃どこにいたんだろうね(ちゃんとしたリーダーシップがあれば)。

根本的に、このアプローチでは多くのことを修正できないよ。シンプルな例を挙げると、Nodeは設定ファイル自体で設定を文書化する方法がない唯一の真剣なOSSソフトウェアだよ。馬鹿げてる!Nodeの人たちは何も考えずにJSONを採用して、その後は代替案を考慮しようともしなかった(「コメント付きJSON」すら)。組織が悪い決定に深入りすると、それを修正する唯一の方法は新しいものを始めることなんだ。JSエコシステム全体がNodeの上に構築され続ける限り、設定に関する文書は決してできないよ。(Nodeエコシステムには他にもこういう問題がたくさんあるけど、設定を文書化できないという完全な不条理は、個人的に気に入らないポイントだね。)

Hacker Newsで議論の続きを見る