Nub - Node.js için Bun benzeri hepsi bir arada araç seti
(github.com/nubjs)- Node.js’in yerini almadan onu güçlendiren hepsi bir arada bir araç seti; Rust ile yazılmış olup standart
nodeüzerinde Bun’a benzer bir geliştirme deneyimi sunar - Dosya ve script çalıştırma, bağımlılık kurma ve Node sürüm yönetimini tek bir araçta birleştirir; yeni runtime, tedarikçiye bağlı API veya lock-in yoktur
- File runner
nub <file>—.ts,.tsxvb. dosyaları build adımı olmadan çalıştırır;nodeile flag-for-flag ve var-for-var uyumludur; startup’tatsx’e göre 2,9× daha hızlıdır- Tam TypeScript desteği (
enum,namespace), JSX/TSX, Decorators,.env*otomatik yükleme,.yaml·.toml·.json5gibi yerleşik loader’lar - Projenin beklediği Node sürümünü otomatik algılayıp kurma (
.node-version,.nvmrc,package.json#enginesvb. referans alınır)
- Tam TypeScript desteği (
- Script runner
nub run—npm/pnpm runiçin drop-in; kendi JS startup’ı olmayan Rust binary’siylepnpm run’a kıyasla yaklaşık 24× daha hızlı dispatch (14,7 ms’ye karşı 442,7 ms)pre/posthook’ları, pnpm workspace--filter·--parallelvb. için tam destek
- Package runner
nubx—npx·pnpm dlxiçin drop-in; çift Node spawn cezasını ortadan kaldıraraknpx’e kıyasla yaklaşık 19× daha hızlı çalıştırma (11 ms’ye karşı 226 ms) - Package manager
nub install— Aube motoru tabanlıdır,pnpmile flag uyumludur;pnpm’e göre 2,5×,npm’e göre 3,7× daha hızlıdır- Yerleşik varsayılan güvenlik politikası — postinstall engelleme, osv.dev kötü amaçlı paket denetimi, provenance downgrade reddi, 24 saatlik
minimumReleaseAge - npm/pnpm/Yarn/Bun lockfile ve ayarlarını otomatik algılayan compat-mode davranışı
- Yerleşik varsayılan güvenlik politikası — postinstall engelleme, osv.dev kötü amaçlı paket denetimi, provenance downgrade reddi, 24 saatlik
- Node version manager
nub node— sürüm install·ls·uninstall·pin gibi manuel yönetim komutları sağlar - Package meta-manager
nub pm— Corepack rolünü native Rust ile yerine getirir;npm·yarn·pnpmiçin global shim kaydı yapar - MIT lisansı
1 yorum
Hacker News görüşleri
Fikir çok iyi ve mantıklı. Bun, DB sürücüleri gibi daha fazla şey sunuyor ama geliştirici deneyiminin de çekiciliğin büyük bir parçası olduğu kesin
Bu arada Nub’ın baş yazarı, Zod’u yaratan Colin McDonnell ve bir dönem Bun’da da çalışmış
nub:önekli yerleşik modüller yok, Nub adlı yapılandırma dosyası/kilit dosyası yok,package.jsoniçindenubalanı yok,NUB_ortam değişkenleri yokBun’ın eklediği şeylerin çoğunun düzgün bağımlılıklar olarak tutulmasının daha iyi olduğunu düşünüyorum
--importyerine--requirehook kullanması şaşırtıcı. Benzer bir özellik yapmaya çalışırken buna bakmıştım; o zamandan beri büyük şeyler değişmiş olabilir ama Nub’ın ESM desteğinde ince bir nokta olup olmadığını merak ediyorumO zamanlar Node’un
--importözelliği çok yeniydi ve tipik ESM-to-CJS yaklaşımıyla ele almak istediğimiz çeşitli istisnalar vardı. Çoğu çok niş vakalardı ama top-level await’in anlamlı bir kullanıcı kitlesini etkileyeceğini düşünüyordum--requireyaklaşık 0.5ms ek yük getirirken,--importM1 Macbook Pro’da yaklaşık 4.6msBununla bağlantılı olarak Node.js, yakın zamanda 2025’te eski asenkron
module.register()API’sine göre performansı artırmak için resolver hook kayıt API’sinin senkron sürümü olanmodule.registerHooks()u ekledi. Bu, Nub için büyük bir engelin kalkması oldu. İlgilenenler için ekleyeyim: asenkron API, sabit 19ms kayıt ek yüküne ve her import başına yaklaşık 130us ek yüke neden oluyorduNub’ın burada hangi bayrağı kullandığının kullanıcı koduna hiçbir etkisi yok ve top-level await, Node.js’in zaten desteklediği yerlerde destekleniyor
Tüm monorepomuzu nub’a migrate eden PR’ı az önce merge ettim
Sıfır sorun çıktı ve inanılmaz hızlı
Node birkaç sürümdür TypeScript çalıştırabiliyor değil miydi? Neden bir dönüştürücü gerekiyor?
tsconfiggibi şeyler de kayboluyorGörünüşe göre bu, hem yerleşik kaldırma yöntemini hem de gerçek TypeScript işlemeyi destekliyor
--experimental-transform-typesseçeneğini kaldırdı. Bu da yerel tam TypeScript desteğini imkânsız hâle getiriyorhttps://github.com/nodejs/typescript/issues/51#issuecomment-...
Worker,Temporalgibi API’lere polyfill enjekte ettiği yazıyorREADME’de WebSocket desteğinin Node 22’den itibaren yerel olduğu yazıyor ama Node’da yerel bir WebSocket kütüphanesi yok. WebSocket standardı bağlantısı MDN’e gidiyor; orası da sadece WHATWG kullanıcı arayüzünü anlatıyor, protokolü veya WebSocket’in nasıl çalıştığını değil
Bir şey eksik gibi ya da yardımcı olarak yerel olmayan bir kütüphane kullanıyormuş hissi veriyor
Mevcut teknolojiyi benimsemesi ve onun daha kötü bir sürümünü yeniden yapmaması saygı duyulacak bir şey. Alternatifler üretmeye harcanan tüm çaba Node’a gitseydi, doğru liderlik altında bugün nereye gelmiş olurdu merak ediyorum
Küçük ve çevik ekipler, başarısızlık ölümcül bir risk olmadığı için iyi fikirleri kanıtlayabilir. Kısacası fork’lar sağlıklı bir ekosistemin parçasıdır
Basit bir örnek olarak, Node bildiğim ciddi açık kaynak yazılımlar arasında yapılandırma dosyası içinde yapılandırmayı belgelemenin bir yolu olmayan tek şey. Bu saçma. Node tarafı düşünmeden JSON’ı benimsedi ve sonrasında “yorumlu JSON” dahil hiçbir alternatifi değerlendirmeye yanaşmadı
Bir organizasyon kötü kararlara saplanıp kaldığında, bunu düzeltmenin tek yolu yeniden başlamaktır. Herkes Node’un üstüne bir şeyler yığmaya devam ettikçe, tüm JS ekosistemi yapılandırmanın içine dokümantasyon bırakamayacak
Node ekosisteminde bunun gibi birçok sorun var ve yapılandırmayı belgelendirememek gibi tam bir absürtlük sadece benim kişisel takıntı noktalarımdan biri
Nub’ın ve maskotu nubnub’ın hayranıyım. Ciddi söylüyorum, harika bir proje ve oldukça ilginç; geçen haftadan beri, en azından duyurulduğundan beri, kullanıp deniyorum
Zekice. En azından zaten Rust ile yazılmışsa, Rust’a migrate etmeyi vibe coding ile yapıp tüm müşterileri kaybetmezsin ;)
Ek olarak, Bun’a yönelik AI karşıtı histeri çok üzücü; bazen örgütlü bir kampanya gibi bile hissettiriyor
package.jsonile de yapılabileceğini düşünmüştüm