oj: بیلدر راستی سازگار با Vite
خلاصهٔ کاملتر
یه توسعهدهنده که تو شرکت Lovable کار میکنه، ابزاری به اسم oj ساخته: یه بیلدر و dev server (سروری که موقع توسعه، پروژه رو زنده تو مرورگر نشون میده) که با زبان Rust نوشته شده. نکتهی جالبش اینه که oj رو میتونی مستقیم رو یه پروژهی Vite + React موجود اجرا کنی، همون vite.config.ts و همون پلاگینها رو میخونه و کار میکنه، بدون اینکه چیزی بازنویسی بشه. خودش هم یه باینری تکیه، نه Node لازم داره نه node_modules، که این برای سندباکسهای موقتی که هر بار از صفر بالا میان خیلی بهدردبخوره.
طبق بنچمارکهای خود سازنده رو یه پروژهی فرضی با دههزار کامپوننت، حالت oj dev --bundle استارت اولیه رو حدود ۴.۳ برابر سریعتر از Vite پیشفرض انجام میده (۱۳۱۵ میلیثانیه در برابر ۵۶۹۳ میلیثانیه). مصرف حافظه هم فرق چشمگیرتری داره: oj حدود ۱۱۵ مگابایت مصرف میکنه در حالی که Vite بالای ۱.۵ گیگابایت میره. البته خود سازنده صادقانه میگه تو یه HMR تکی (یعنی رفرش لحظهای بعد از تغییر کد) فرقی با یه Vite خوب تنظیمشده نداره، هر دو حدود ۶۰ میلیثانیه طول میکشن.
برای اینکه ادعاش رو تو یه پروژهی واقعی هم بسنجه، سازنده oj رو بدون دست زدن به کانفیگ، رو ریپوی معروف Excalidraw اجرا کرده. اونجا هم استارت زیر یک ثانیه طول کشیده در برابر ۲.۳ ثانیهی Vite، اونم با یکهشتم حافظه. یه محدودیت هم هست: oj فعلاً پلاگین vite-plugin-checker (که خطاهای TypeScript رو تو مرورگر نشون میده) رو ساپورت نمیکنه و موقع بالا اومدن همینو لاگ میکنه.
خود سازنده میگه oj اولش برای حل مشکل خودش ساخته شده، وقتی خسته شده بود از دیدن اجرای مکرر vite build که هر بار چند گیگ حافظه میخورد. الان تو Lovable هم پشت یه فلگ رو یه اپ تولیدی واقعی با حدود ۱۸۰۰۰ ماژول و بیشتر از پنجاه پلاگین استفاده میشه و همین، سختترین تست oj بوده. پروژه بهصورت متنباز و با لایسنس MIT رو crates.io منتشر شده و نصبش با یه دستور ساده انجام میشه:
cargo install oj --locked
cd your-vite-app
oj dev
نکات کلیدی:
- oj یه بیلدر و dev server راستیـه که مستقیم رو پروژههای Vite + React اجرا میشه، بدون تغییر کانفیگ یا پلاگین
- رو بنچمارک دههزار کامپوننتی، استارت اولیه ۴.۳ برابر سریعتر از Vite و مصرف حافظه حدود ۱۳ برابر کمتره
- رو ریپوی واقعی Excalidraw هم بدون تغییر کانفیگ اجرا شده، با استارت زیر یک ثانیه
- فعلاً پلاگین vite-plugin-checker رو ساپورت نمیکنه
- متنباز و MIT، نصب با cargo install oj --locked




