Crust؛ فریمورک ساخت CLI برای Bun
خلاصهٔ کاملتر
Crust یه فریمورک ساخت رابط خط فرمانه که خودش رو TypeScript-first و Bun-native معرفی میکنه و روی ماژولهای ترکیبشدنی بنا شده. حرف اصلیش اینه که ساختن یه CLI نباید یعنی وارد کردن یه بستهٔ سنگین با دهها وابستگی؛ بهجاش هستهٔ کوچیک بگیر و فقط تیکههایی رو اضافه کن که لازم داری.
API ش زنجیرهای و روانه: یه نمونهٔ Crust میسازی، پلاگینها رو با use وصل میکنی، آرگومانها و فلگها رو تعریف میکنی و منطق دستور رو تو run میذاری. نکته اینه که تایپها همونجا استنتاج میشن — داخل run هم args و هم flags تایپدار در اختیارتن، بدون کست دستی:
const cli = new Crust("greet")
.use(helpPlugin())
.args([{ name: "name", type: "string" }])
.flags({ shout: { type: "boolean", alias: "s" } })
.run(({ args, flags }) => {
const msg = `Hello, ${args.name}!`;
console.log(flags.shout ? msg.toUpperCase() : msg);
});شش ویژگیای که روی صفحهٔ پروژه برجسته شدن اینان: استنتاج کامل تایپ بدون کست، صفر وابستگی رانتایمی، ساختار ماژولار، سیستم پلاگین مبتنی بر هوکهای میانافزاری، API زنجیرهای و اجرای بومی روی رانتایم Bun. ترکیب «صفر وابستگی» و «ماژولار» عملاً یعنی حجم نهایی ابزارت رو خودت تعیین میکنی.
خود پروژه به چندین بستهٔ جدا تقسیم شده. @crustjs/core پارس آرگومان، روتینگ و سیستم پلاگین رو داره؛ @crustjs/plugins پلاگینهای رسمی؛ @crustjs/crust ابزار بیلد؛ و @crustjs/create کتابخونهٔ اسکفلد برای ساختن ابزارهای create-xx. بقیهٔ ماژولها هم کارهای روزمرهٔ یه CLI رو پوشش میدن: validate برای اعتبارسنجی schema-first، prompts برای پرسش تعاملی، progress برای نشانگر پیشرفت، style برای استایل ترمینال، store برای ذخیرهٔ تایپدار تنظیمات و man برای تولید صفحات راهنمای mdoc(7).
یه ماژول جالب هم @crustjs/skills ه برای تولید مهارتهای ایجنت — نشونهٔ اینکه پروژه ابزارهای خط فرمان رو چیزی میبینه که قراره ایجنتها هم صداشون بزنن، نه فقط آدمها. سه بستهٔ دیگه (test برای تست CLI، render برای رندر محتوای ترمینال و log برای لاگ ساختیافته) هنوز منتشر نشدن.
نکتهای که موقع ارزیابی باید حواست بهش باشه اینه که Crust تو مرحلهٔ آلفاست. شمارهٔ نسخهٔ بستهها هم همین رو نشون میده: هستهٔ اصلی روی نسخههای 0.0.x و آلفاست و فقط بخشی از ماژولها مثل پلاگینها، اعتبارسنجی، استایل و ذخیرهسازی به بتا رسیدن. یعنی برای پروژهٔ تولیدی هنوز زوده، ولی اگه دنبال یه فریمورک CLI سبک و تایپدار روی Bun میگردی، ارزش دنبالکردن داره.
نکات کلیدی:
- Crust یه فریمورک CLI با تمرکز بر TypeScript و رانتایم Bun ه
- API زنجیرهای با استنتاج کامل تایپ برای آرگومانها و فلگها، بدون کست دستی
- هیچ وابستگی رانتایمی نداره و به ماژولهای جدا تقسیم شده تا فقط چیزی که لازمه رو برداری
- سیستم پلاگین مبتنی بر هوکهای میانافزاریه
- ماژولها از پرامپت تعاملی و اعتبارسنجی تا تولید صفحهٔ man و مهارت ایجنت رو پوشش میدن
- پروژه هنوز آلفاست و بخشی از ماژولها منتشر نشدن




