Nub؛ جعبهابزاری که Node رو کنار نمیزنه
خلاصهٔ کاملتر
سازندهٔ Nub این ابزار رو یه جعبهابزار همهکاره و «TypeScript-first» برای Node.js معرفی میکنه که برخلاف Deno و Bun قصد نداره Node رو کنار بزنه، بلکه میخواد تکمیلش کنه. Nub یه باینری واحد نوشتهشده با Rustه که فایلها و اسکریپتهات رو اجرا میکنه، وابستگیها رو نصب میکنه و حتی خود Node رو مدیریت میکنه — بدون رانتایم جدید و بدون قفلشدن به یه ابزار خاص.
نکتهٔ کلیدی اینه که Nub یه رانتایم جدید نیست. کدت رو در حافظه با oxc (که به شکل یه افزونهٔ نیتیو Node کامپایل شده) ترنسپایل میکنه و خروجی رو روی همون باینری استاندارد node اجرا میکنه. برای همینه که سازندش میگه سازگاریاش با Node واقعیه، نه یه پیادهسازی دوباره. تو تست سازگاری، Nub حدود ۹۸٫۸٪ نمره گرفته، در حالی که Deno حدود ۷۷٪ و Bun حدود ۴۰٪ بودن.
برخلاف قابلیت type stripping خود Node که فقط annotationها رو پاک میکنه، Nub هر فایل رو کامل ترنسپایل میکنه، پس چیزهایی مثل enum، parameter property و importهای بدون پسوند که Node قبولشون نداره، اینجا کار میکنن. tsconfig.json و pathهاش، فایلهای .env، دکوریتورها، JSX و ایمپورت مستقیم YAML/TOML/JSON هم پشتیبانی میشن:
import { Model } from "./base" // extensionless → ./base.ts
enum Status { Draft, Sent, Paid }
class Invoice extends Model {
constructor(public status = Status.Draft) {} // parameter property
}به گفتهٔ سازنده، سرعت هم نقطهٔ قوتشه چون هستهٔ سنگین کارش با Rust نوشته شده. ادعا میکنه دستور اجرای اسکریپتها حدود ۲۴ برابر سریعتر از pnpm run، ابزار nubx حدود ۱۹ برابر سریعتر از npx و نصب وابستگیها حدود ۲٫۵ برابر سریعتر از pnpmه. اجرای مستقیم یه فایل TypeScript هم تقریباً همپای node خالیه و حدود ۲٫۹ برابر سریعتر از tsx.
بخش نصب وابستگیاش با pnpm سازگاره و همون lockfile موجود پروژه (چه npm، چه pnpm، چه bun) رو میخونه و به همون فرمت برمیگردونه، پس نیازی به مهاجرت نیست. سازنده تأکید میکنه که هیچ lock-inای وجود نداره: نه گلوبال nub، نه namespace اختصاصی، نه فیلد جدا تو package.json. میتونی node رو تو هر اسکریپت، Dockerfile یا مرحلهٔ CI با nub عوض کنی و بقیهچیزها همونطور کار کنه.
نکات کلیدی:
- Nub یه جعبهابزار TypeScript-first برای Nodeه که بهجای جایگزینی Node، تکمیلش میکنه
- رانتایم جدید نیست؛ با oxc در حافظه ترنسپایل میکنه و روی node استاندارد اجرا میکنه
- سازگاری Node حدود ۹۸٫۸٪ گزارش شده، خیلی بالاتر از Deno و Bun
- ادعای سرعت: nub run حدود ۲۴×، nubx حدود ۱۹× و نصب حدود ۲٫۵× سریعتر از ابزارهای معادل
- lockfile موجود پروژه رو میخونه و هیچ قفلشدنی به Nub ایجاد نمیکنه




