Nub - Node.js向けのBunライクなオールインワンツールキット
(github.com/nubjs)- Node.jsを置き換えるのではなく補完するオールインワンツールキットで、Rustで書かれており標準の
node上でBunに近い開発体験を提供 - ファイル・スクリプト実行、依存関係のインストール、Nodeバージョン管理を単一ツールに統合し、新しいランタイム・ベンダー依存API・lock-inなし
- File runner
nub <file>—.ts、.tsxなどをビルド工程なしで実行し、nodeとflag-for-flag・var-for-var互換、tsx比で起動が2.9倍高速- 完全なTypeScriptサポート(
enum、namespace)、JSX/TSX、Decorators、.env*自動読み込み、.yaml・.toml・.json5などの組み込みloader - プロジェクトが想定するNodeバージョンの自動検出・インストール(
.node-version、.nvmrc、package.json#enginesなどを参照)
- 完全なTypeScriptサポート(
- Script runner
nub run—npm/pnpm runのdrop-inで、独自のJS startupがないRustバイナリによりpnpm run比で約24倍高速なdispatch(14.7ms vs 442.7ms)pre/posthook、pnpm workspaceの--filter・--parallelなどを全面サポート
- Package runner
nubx—npx・pnpm dlxのdrop-inで、double-Node-spawnペナルティを除去しnpx比で約19倍高速に実行(11ms vs 226ms) - Package manager
nub install— Aubeエンジンベースで、pnpmとflag互換、pnpm比2.5倍・npm比3.7倍高速- デフォルトのセキュリティポリシーを内蔵 — postinstallをブロックし、osv.devの悪意あるパッケージを検査し、provenance downgradeを拒否、24時間の
minimumReleaseAge - npm/pnpm/Yarn/Bunのlockfile・設定を自動検出するcompat-modeで動作
- デフォルトのセキュリティポリシーを内蔵 — postinstallをブロックし、osv.devの悪意あるパッケージを検査し、provenance downgradeを拒否、24時間の
- Node version manager
nub node— バージョンのinstall・ls・uninstall・pinなどの手動管理コマンドを提供 - Package meta-manager
nub pm— Corepackの役割をnative Rustで担い、npm・yarn・pnpmのグローバルshimを登録 - MITライセンス
1件のコメント
Hacker Newsのコメント
アイデアはとても良く、筋が通っている。Bun は DBドライバ などをさらに提供しているが、開発者体験も魅力の大きな部分であることは確かだ
ちなみに Nub の主著者は Zod を作った Colin McDonnell で、かつて Bun でも働いていた
nub:接頭辞付きの組み込みモジュールも、Nub という名前の設定ファイルやロックファイルも、package.jsonのnubフィールドも、NUB_環境変数もないBun が追加したものの大半は、きちんとした依存関係として持つほうがよいと思う
--importではなく--requireフックを使っているのは意外だ。同様の機能を作ろうとして調べていた頃から何か大きく変わったのかもしれないが、Nub の ESM サポートには微妙な点があるのではないかと思う当時は Node の
--importがまだかなり初期段階で、一般的な ESM-to-CJS アプローチで対処したかった例外がいくつもあった。その大半はかなりニッチなケースだっただろうが、トップレベル await は一部の重要なユーザーに影響すると考えていた--requireのオーバーヘッドは約 0.5ms だが、--importは M1 Macbook Pro で 4.6ms ほどだ関連して Node.js は最近 2025 年に、以前の非同期
module.register()API より性能を高めるため、resolver フック登録 API の同期版であるmodule.registerHooks()を導入した。これは Nub にとって大きな障害の解消だった。関心のある人向けに付け加えると、非同期 API は固定の登録オーバーヘッド 19ms に加え、import ごとに約 130us の追加オーバーヘッドがあったここで Nub がどのフラグを使っているかはユーザーコードにまったく影響せず、トップレベル await も Node.js 自体が対応している場所ではサポートされる
ちょうど モノレポ全体を nub に移行する PR をマージしたところだ
問題は 0 件で、信じられないほど速い
Node は数バージョン前から TypeScript を実行できたのでは? なぜトランスパイラが必要なんだ?
tsconfigのようなものも失われるこれは組み込みの削除方式と、実際の TypeScript 処理の両方をサポートしているようだ
--experimental-transform-typesを削除した。これではネイティブな 完全 TypeScript サポート は不可能になるhttps://github.com/nodejs/typescript/issues/51#issuecomment-...
WorkerやTemporalのような API に必要であれば ポリフィルを注入すると書かれているREADME には WebSocket サポートは Node 22 からネイティブと書かれているが、Node にはネイティブの WebSocket ライブラリはない。WebSocket 標準へのリンクは MDN に飛ぶが、そこでは WHATWG のユーザーインターフェースしか説明されておらず、プロトコルや WebSocket の動作については説明していない
何かが欠けているか、補助として 非ネイティブのライブラリを使っているように感じる
既存技術を受け入れ、より悪いバージョンを作り直さない点は評価できる。代替を作るために費やされたすべての労力が Node に向けられていたら、適切なリーダーシップの下で今ごろどこまで進んでいたのか気になる
小さく機敏なチームは、失敗が致命的なリスクではないため、良いアイデアを実証できる。要するにフォークは健全なエコシステムの一部だ
簡単な例を挙げると、Node は私が知る本格的なオープンソースソフトウェアの中で 設定ファイル内に設定を文書化する方法がない 唯一のものだ。ばかげている。Node 側は深く考えずに JSON を採用し、その後は「コメント付き JSON」すら含め、どんな代替案の検討も拒んできた
組織が悪い決定に固執したとき、それを直す唯一の方法はゼロからやり直すことだ。皆が Node の上に積み上げ続ける限り、JS エコシステム全体は設定に説明を書き残せないままだろう
Node エコシステムにはこうした問題がいくつもあり、設定を文書化できないという完全な不条理は、ただの個人的な不満点にすぎない
Nub とマスコットの nubnub のファンだ。真面目な話、素晴らしいプロジェクトで、かなり興味深いので先週から、少なくとも公開されて以来ずっと試している
うまい。すでに Rust で書かれていれば、Rust への移行をバイブコーディングしているうちに顧客を全部失うこともないからね ;)
付け加えると、Bun に対する反 AI ヒステリーはとても悲しく、ときには組織的なキャンペーンのように感じることすらある
package.jsonでも実現できると思っていた