VoidZero، تیمی که پشت ابزارهایی مثل Vite، Vitest، Rolldown، Oxc و Vite+ قرار دارد، به Cloudflare ملحق میشود و همه اعضای تیم VoidZero هم به Cloudflare میآیند. قبل از هر چیز باید روشن بگوییم: Vite، Vitest، Rolldown، Oxc و Vite+ همچنان متنباز، vendor-agnostic و مبتنی بر جامعه خواهند ماند؛ این موضوع تغییر نمیکند 🙂.
این خبر برای Vite چه معنایی دارد
خبر امروز یعنی Vite منابع بیشتری برای رشد در اختیار خواهد داشت، اما اصولی که Vite را متمایز کرده باقی میماند: Vite همچنان تحت مجوز MIT و متنباز خواهد بود. Vite همچنان vendor-agnostic است و اپلیکیشنهای ساختهشده با Vite هر جایی قابل اجرا خواهند بود. مسیر توسعه (roadmap) توسط تیم گستردهتر Vite و جامعه هدایت میشود و توسعه در فضای باز ادامه مییابد. ایوان و بقیه اعضای تیم VoidZero همچنان رهبری پروژههای Vite، Vitest، Rolldown، Oxc و Vite+ را برعهده دارند و Cloudflare صرفاً متعهد به اختصاص مهندسی و منابع به این پروژهها است، نه تغییر جهت دادن آنها. علاوه بر این، Cloudflare با تعهد مالی 1 میلیون دلار برای یک صندوق اکوسیستم Vite که توسط تیم هستهای Vite مدیریت میشود، پشتیبانی از نگهدارندگان و مشارکتکنندگان را اعلام کرده است — کاری که برای حفظ اکوسیستمِ فراتر از هر شرکت خاص ضروری است 💪.
Vite بهعنوان یک لایه زیرساختی
تیمهای Vite و Cloudflare قبل از این اعلامیه هم همکاری داشتهاند، از جمله در 2024 با معرفی Vite Environment API. این Environment API اجازه میدهد در زمان توسعه (dev) کد سرور روی چیزی غیر از Node.js اجرا شود. ما در طراحی آن با تیم Vite نزدیک کار کردیم و سپس پلاگین Cloudflare Vite را روی آن ساختیم. وقتی با پلاگین Cloudflare دستور vite dev را اجرا میکنید، کد سرور شما داخل workerd اجرا میشود — همان runtime متنبازی که Workers را در production تقویت میکند. Durable Objects، D1، KV، R2، Workflows، Workers AI، Agents، Service Bindings، Workers RPC و غیره به همان مدل runtime که در پروداکشن است، به صورت محلی هم اجرا میشوند. این گونه همگرا کردن محیط محلی و پروداکشن، هزینههای «توسعه روی runtime غیر-Node» را کم میکند و مشکل «محیط محلی مانند نسخه ضعیفتری از پروداکشن» را کاهش میدهد.
نحوه پذیرش و رشد
منحنی پذیرش Vite در اکوسیستم چشمگیر است: در زمان نگارش این متن، Vite حدود 129M دانلود هفتگی دارد و پلاگین Cloudflare Vite (@cloudflare/vite-plugin) تقریباً 14M دانلود هفتگی داشته است. اگر سال پیش کسی میگفت پلاگینی از Cloudflare به این میزان دانلود خواهد رسید، بعید بود باور کنیم — اما با رشد تولید نرمافزار توسط AI و افزایش اپلیکیشنهایی که از کد تولیدشده توسط عاملها (agents) شروع میشوند، تقاضا برای یک استک پیشفرض و محیط اجرا بالا رفته و Vite و ترکیب آن با Cloudflare به گزینهای محبوب تبدیل شدند 🚀.
AI چگونه نحوه نوشتن نرمافزار را تغییر داده است
قبلاً فقط توسعهدهندگان از dev servers، bundlers، linters، formatters و CLIها استفاده میکردند؛ حالا عاملها (agents) هم مرتب از آنها استفاده میکنند: پروژه اس캐فولد میکنند، dev server راه میاندازند، خطاها را میخوانند، تست مینویسند و اجرا میکنند، lint و format انجام میدهند و پیشنمایشها را دیپلوی میکنند. به همین دلیل حلقه بازخورد سریع اهمیت بیشتری پیدا کرده: build سریع، تست سریع، lint/format سریع، خطاهای ساختارمند و CLIهای سازگار — چون عاملها مرتب تکرار میکنند و باید قابلاعتماد باشند. کل toolchain های VoidZero (Vitest، Rolldown، Oxc، Oxlint، Oxfmt و Vite+) برای این چرخه طراحی شدهاند؛ سریع و کمهزینه برای اجرای مکرر توسط عاملها. Vite+ هم این قطعات را در یک ابزار یکپارچه با یک CLI و مدل پیکربندی مشترک جمع کرده تا چرخه توسعه برای انسانها و عاملها سادهتر و قابلپیشبینیتر شود 🤖.
ما خودمان هم این ابزارها را استفاده میکنیم: داشبورد Cloudflare روی Vite ساخته شده، Oxlint زمان مهندسی را در کدبیسهای Cloudflare کاهش داده، و Flue (چارچوب harness برای agentها از تیم Astro) هم به سمت Vite میآید. Flue میتواند agentها را روی Node.js، Cloudflare Workers، GitHub Actions، GitLab CI/CD و غیره اجرا کند و هدف Cloudflare اکنون استفاده از پلاگین رسمی Cloudflare Vite و ادغام workerd است — یعنی Vite دارد در داخل Cloudflare هم به بنیاد اپلیکیشن تبدیل میشود.
Vite در حال تبدیل شدن به یک پشته full-stack
چند سال پیش، کار یک build tool ساده بود: فایلهای سورس را بگیر، یک bundle بساز و تحویل بده. امروز یک اپلیکیشن مدرن شامل مسیرهای سروررندرشده، APIها، کارهای background، صفها، دیتابیسها، object storage، real-time، احراز هویت، و فهرست رو به رشدی از agentها و قابلیتهای AI است. بنابراین “build” دیگر پایان کار نیست بلکه شروع یک دیپلویمنتی است که باید از تمام این اجزا اطلاع داشته باشد. به همین دلیل Vite باید بیش از یک build tool شود: باید بخشهایی از اپلیکیشن را بفهمد و در عین حال به سرعت، سادگی و قابلیت حملی که آن را متمایز کرده پایبند بماند.
پلتفرم Void که برای Vite طراحی شده بود بهعنوان یک میدان آزمایشی برای این ایدهها عمل کرد: چه چیزهایی باید در یک فریمورک اپلیکیشن مدرن در اختیار گرفته شود، دیپلوی چگونه باید باشد و چه مقدار از lifecycle اپلیکیشن میتواند حول یک toolchain یکپارچه شود. بعضی درسها باید در خود Vite بهصورت provider-agnostic primitives و hookهای کلاساول برای backendها، APIها، agentها و دیپلوی قرار بگیرند تا هر provider بتواند پیادهسازی کند؛ بعضی پیادهسازیها هم منطقی است که داخل Cloudflare ارائه شوند. حتی اگر چند نگهدارنده Vite به Cloudflare ملحق شوند، تغییرات در Vite همچنان از طریق فرآیند contribution باز ادامه خواهد یافت و ویژگیهای اضافهشده نباید مختص Cloudflare باشند — آنها باید روی هر جایی که Vite کار میکند، کار کنند.
هدایت Cloudflare به سمت Vite
همین منطق روی ابزارهای خود Cloudflare هم تاثیر گذاشته: ما نداریم Vite را به سمت Cloudflare تغییر دهیم، بلکه در حال آوردن ابزارهای اپلیکیشن Cloudflare روی Vite هستیم تا روی همان ورکفلوهایی که توسعهدهندگان میشناسند ساخته شوند. ما نمونه فنی جدیدی به نام cf را در حالت پیشنمایش عرضه کردهایم: یک CLI یکپارچه برای کل پلتفرم Cloudflare که هدفش این است تجربه CLI برای اپلیکیشنها را مبتنی بر Vite کند. هدف نهایی این است که یک CLI همگون برای همه محصولات Cloudflare داشته باشیم، با همان ارگونومی چه روی Workers، R2، D1، Agents یا هر چیز دیگر کار کنید.
اگر این کار را درست انجام دهیم، CLI Cloudflare باید حس و رفتار Vite را داشته باشد، نه اینکه یک چیز جدا که کنارش Vite قرار گرفته است. cf dev باید یک superset از vite dev باشد: همان سرعت، همان HMR، همان مدل پلاگین، بهعلاوه runtime و bindingهای Cloudflare وقتی خواستید از آنها استفاده کنید. cf build باید پروژههای Vite را بدون کار اضافی بشناسد و cf deploy باید دیپلوی یک اپ Vite روی Cloudflare را ساده کند. اگر امروز Vite را اجرا میکنید، مسیر مهاجرت به Cloudflare باید شفاف، بدون دردسر و برگشتپذیر باشد ✅.