crust؛ دیف بیلد پروداکشن برای Next.js
خلاصهٔ کاملتر
crust یه ابزار خط فرمان تازهست برای پروژههای Next.js با App Router. از هر بیلد پروداکشن یه اسنپشات (یعنی یه فایل که وضعیت اون بیلد رو ثبت میکنه) نگه میداره و بعد دو تا اسنپشات رو با هم مقایسه میکنه. تو مستندات پروژه اومده که بهجای لیست کردن همهی روتها، اول جواب رو میده: BLOCK، REVIEW، CLEAR یا CANNOT DECIDE.
کار کردن باهاش دو تا دستوره؛ اول بیلد پروداکشن، بعد دیف گرفتن با یه برنچ دیگه:
next build
npx @moumensoliman/crust diff main
اگه هنوز هیچ اسنپشاتی نداری، فلگ --build هر دو سر مقایسه رو تو ورکتری جدای git بیلد میکنه، بدون اینکه چکاوت فعلیت رو تکون بده.
چیزی که پیدا میکنه مشخصه: روتی که از استاتیک به ISR یا داینامیک افتاده، خوندنی که قبلا کش میشد و حالا نمیشه، کامپوننتی که از پوستهی استاتیک بیرون زده، و رشد جاوااسکریپت لود اولیه همراه با پکیجی که مقصرشه. یه علت مشترک هم فقط یه بار گزارش میشه: اگه یه پکیج ۹ تا روت رو خراب کرده، بهجای ۹ تا هشدار تکراری، یه تصمیم با دامنهی تاثیر ۹ روت میبینی.
دستور crust ci همینو تبدیل به دروازهی مرج میکنه: روی پولریکوئست کامنت میذاره و با یافتهی مسدودکننده با کد خطا خارج میشه. حتی بدون فایل باجه، افت مود رندر یا از بین رفتن پوستهی استاتیک کافیه که جلوی مرج رو بگیره. سقفهای دلخواه پروژه هم تو .perf/budgets.json تعریف میشن.
تو مستندات روی یه نکته تاکید شده: هر نتیجهای برچسب verified، inferred یا unknown میخوره و ابزار زنجیرهی ناقص رو تبدیل به اتهام قطعی نمیکنه. برای اینکه بایتها به فایل و پکیج نسبت داده بشن باید productionBrowserSourceMaps رو روشن کنی، وگرنه فقط جمع کل هر روت میمونه و علت گزارش نمیشه.
نکات کلیدی:
- نیازمندیها: Next.js 15 یا 16، فقط App Router، وبپک یا توربوپک و Node.js 20 به بالا
- تصمیم خروجی یکی از چهار حالت BLOCK، REVIEW، CLEAR یا CANNOT DECIDE هست
- بدون سورسمپ مرورگر، انتساب بایتها به فایل و پکیج انجام نمیشه
- crust mcp هشت ابزار فقطخواندنی رو روی stdio به ایجنت میده، بدون مدل و بدون کلید API
- پروژه هنوز pre-alpha هست و فرمت اسنپشات و خروجی CLI ممکنه عوض بشه




