Nub - Toolkit all-in-one mirip Bun untuk Node.js
(github.com/nubjs)- Toolkit all-in-one yang melengkapi tanpa menggantikan Node.js, ditulis dalam Rust dan memberikan pengalaman pengembangan mirip Bun di atas
nodestandar - Menyatukan eksekusi file·skrip, instalasi dependensi, dan pengelolaan versi Node dalam satu alat, tanpa runtime baru, API khusus vendor, atau lock-in
- File runner
nub <file>— menjalankan.ts,.tsx, dan lainnya tanpa tahap build, kompatibelnodeflag-for-flag dan var-for-var, startup 2,9× lebih cepat dibandingtsx- Dukungan TypeScript penuh (
enum,namespace), JSX/TSX, Decorators, pemuatan otomatis.env*, serta loader bawaan untuk.yaml,.toml,.json5, dan lainnya - Mendeteksi dan memasang otomatis versi Node yang diharapkan proyek (mengacu pada
.node-version,.nvmrc,package.json#engines, dll.)
- Dukungan TypeScript penuh (
- Script runner
nub run— drop-in penggantinpm/pnpm run, biner Rust tanpa startup JS internal dengan dispatch sekitar 24× lebih cepat dibandingpnpm run(14.7ms vs 442.7ms)- Dukungan penuh untuk hook
pre/post, pnpm workspace--filter·--parallel, dan lainnya
- Dukungan penuh untuk hook
- Package runner
nubx— drop-in penggantinpx·pnpm dlx, menghilangkan penalti double-Node-spawn sehingga eksekusi sekitar 19× lebih cepat dibandingnpx(11ms vs 226ms) - Package manager
nub install— berbasis engine Aube, kompatibel dengan flagpnpm, 2,5× lebih cepat daripnpmdan 3,7× lebih cepat darinpm- Kebijakan keamanan bawaan secara default — memblokir postinstall, memeriksa paket berbahaya lewat osv.dev, menolak provenance downgrade, dan
minimumReleaseAge24 jam - Berjalan dalam compat-mode yang otomatis mendeteksi lockfile dan konfigurasi npm/pnpm/Yarn/Bun
- Kebijakan keamanan bawaan secara default — memblokir postinstall, memeriksa paket berbahaya lewat osv.dev, menolak provenance downgrade, dan
- Node version manager
nub node— menyediakan perintah pengelolaan manual seperti install·ls·uninstall·pin versi - Package meta-manager
nub pm— menjalankan peran Corepack dalam Rust native, mendaftarkan shim globalnpm·yarn·pnpm - Lisensi MIT
1 komentar
Komentar Hacker News
Idenya sangat bagus dan masuk akal. Bun memang menyediakan lebih banyak hal seperti driver DB, tetapi jelas bahwa pengalaman pengembang juga merupakan bagian besar dari daya tariknya
Sebagai catatan, penulis utama Nub adalah Colin McDonnell, pembuat Zod, dan dulu pernah bekerja di Bun
nub:, tidak ada file konfigurasi/file lock bernama Nub, tidak ada fieldnubdipackage.json, dan tidak ada variabel lingkunganNUB_Menurut saya, sebagian besar hal yang ditambahkan Bun lebih baik dijadikan dependensi yang semestinya
Agak mengejutkan mereka memakai hook
--requirealih-alih--import. Mungkin ada banyak hal yang sudah berubah sejak saya meneliti cara membuat fitur serupa, tetapi saya curiga ada sisi rumit dalam dukungan ESM NubSaat itu
--importdi Node masih sangat awal, dan ada beberapa kasus pengecualian yang ingin ditangani dengan pendekatan ESM-to-CJS yang umum. Kebanyakan mungkin sangat niche, tetapi top-level await tampaknya akan memengaruhi sebagian pengguna yang cukup berarti--requiremenambah overhead sekitar 0,5 ms, sedangkan--importsekitar 4,6 ms di M1 Macbook ProTerkait ini, Node.js baru-baru ini pada 2025 memperkenalkan
module.registerHooks(), versi sinkron dari API registrasi hook resolver, untuk meningkatkan performa dibanding APImodule.register()lama yang asinkron. Ini menghilangkan hambatan besar bagi Nub. Sebagai tambahan bagi yang tertarik, API asinkron menambahkan overhead registrasi tetap 19 ms dan tambahan overhead sekitar 130us untuk setiap importFlag apa yang dipakai Nub di sini sama sekali tidak memengaruhi kode pengguna, dan top-level await didukung di tempat yang memang sudah didukung oleh Node.js sendiri
Kami baru saja me-merge PR untuk memigrasikan seluruh monorepo kami ke nub
Nol masalah, dan cepatnya tidak masuk akal
Bukannya Node sudah bisa menjalankan TypeScript sejak beberapa versi lalu? Kenapa masih perlu transformer?
tsconfigjuga hilangIni tampaknya mendukung baik pendekatan penghapusan bawaan maupun pemrosesan TypeScript yang sesungguhnya
--experimental-transform-typesdi Node.js v26. Ini membuat dukungan TypeScript penuh secara native jadi mustahilhttps://github.com/nodejs/typescript/issues/51#issuecomment-...
WorkerdanTemporalDi README tertulis dukungan WebSocket native mulai Node 22, tetapi Node tidak punya library WebSocket native. Tautan standar WebSocket mengarah ke MDN, dan di sana hanya dijelaskan antarmuka pengguna WHATWG, bukan protokol atau cara kerja WebSocket
Rasanya ada yang hilang, atau seperti memakai library non-native sebagai pelengkap
Patut dihargai bahwa mereka menerima teknologi yang sudah ada dan tidak membuat ulang versi yang lebih buruk. Saya penasaran, kalau semua upaya yang dipakai untuk membuat alternatif justru diarahkan ke Node, dengan kepemimpinan yang tepat, kita bisa sudah sampai sejauh apa sekarang
Tim kecil yang lincah bisa membuktikan ide bagus karena kegagalan bukan risiko yang fatal. Singkatnya, fork adalah bagian dari ekosistem yang sehat
Contoh sederhana: Node adalah satu-satunya perangkat lunak open source serius yang saya tahu tidak punya cara untuk mendokumentasikan konfigurasi di dalam file konfigurasi. Ini konyol. Pihak Node mengadopsi JSON tanpa banyak pikir, lalu setelah itu menolak mempertimbangkan alternatif apa pun, termasuk “JSON dengan komentar”
Jika sebuah organisasi terjebak pada keputusan buruk, satu-satunya cara memperbaikinya adalah mulai dari awal. Selama semua orang terus menumpuk di atas Node, seluruh ekosistem JS tidak akan bisa meninggalkan dokumentasi di konfigurasi
Ada beberapa masalah seperti ini di ekosistem Node, dan absurditas total bahwa konfigurasi tidak bisa didokumentasikan hanyalah titik keluhan pribadi saya
Saya penggemar Nub dan maskotnya, nubnub. Serius, ini proyek yang hebat, cukup menarik, dan saya sudah terus memakainya sejak minggu lalu, atau setidaknya sejak dirilis ke publik
Cerdas. Kalau sudah ditulis dalam Rust, setidaknya tidak akan ada migrasi ke Rust lewat vibe coding lalu kehilangan semua pelanggan ;)
Tambahan lagi, histeria anti-AI terhadap Bun sangat menyedihkan, dan kadang bahkan terasa seperti kampanye yang terorganisasi
package.json