vinext: اجرای Next.js روی Vite
خلاصهٔ کاملتر
vinext یه پروژه از کلادفلره که میذاره اپهای Next.js رو روی Vite اجرا کنی، با Cloudflare Workers بهعنوان هدف اصلی استقرار. نکته کلیدیش اینه که بهجای مصرف خروجی next build، کل سطح API نکست رو از نو روی Vite پیاده کرده. توی مقاله معرفی اومده که این کار با کمک هوش مصنوعی و توی یه هفته انجام شده.
طبق مستندات، چیزهایی که همین الان کار میکنن شامل هر دو مسیریاب App Router و Pages Router (توی حالت توسعه و بیلد پروداکشن)، React Server Components، Server Actions، route handlerها، میدلور، تولید استاتیک و ISR، و ماژولهای پرکاربرد next/* مثل next/link، next/image و next/navigation هستن. یکپارچگی با Cloudflare Workers از همه عمیقتره؛ Node.js و بقیه پلتفرمها هم با سطح پشتیبانی متفاوت در دسترسن.
سازندهها صادقن که این ابزار هنوز زیر توسعه فعاله و جایگزین بیدردسر هر اپی نیست. مثلاً "use cache" فقط تا حدی پیاده شده، بهینهسازی تصویر و فونت موقع بیلد کامل نیست، و بعضی ماژولهای نیتیو مثل sharp و satori ممکنه توی محیط توسعه RSC مشکل بدن. پیشنهادشون اینه که قبل از مهاجرت، vinext check رو روی اپ فعلیت اجرا کنی.
یکی از راحتیهای اصلی vinext دسترسی به bindingهای کلادفلر مثل D1، R2، KV و AI هست. میتونی مستقیم از cloudflare:workers ماژول env رو ایمپورت کنی و توی هر سرور کامپوننت یا route handler ازش استفاده کنی، بدون اینکه به worker entry سفارشی یا ترفند خاصی نیاز داشته باشی:
import { env } from "cloudflare:workers";
export default async function Page() {
const result = await env.DB.prepare("SELECT * FROM posts").all();
return <div>{JSON.stringify(result)}</div>;
}مهاجرت پروژه موجود هم با یه دستور npx vinext init انجام میشه که غیرمخربه؛ یعنی راهاندازی Next.js فعلیت کنار vinext دستنخورده میمونه و next.config و فایلهای سورست عوض نمیشن. vinext روی Vite 8 هدفگذاری کرده که پیشفرض از Rolldown و Oxc و Lightning CSS استفاده میکنه.
مقاله خیلی منصفانه vinext رو با گزینههای دیگه مقایسه میکنه. OpenNext خروجی next build رو برای پلتفرمهای مختلف تطبیق میده، بالغتره و چون روی خروجی خود نکست سواره پوشش API بیشتری داره؛ برای همین به گفته سازندهها اگه گزینه امنتر و اثباتشدهتر میخوای، OpenNext انتخاب بهتریه. در مقابل، فلسفه vinext بیلد سریعتر و باندل سبکتره، با هدف پوشش بیش از ۹۵٪ اپهای واقعی نکست، نه سازگاری صددرصدی با رفتارهای مستندنشده.
نکات کلیدی:
- vinext رابط API نکست رو از نو روی Vite پیاده میکنه، بهجای مصرف خروجی next build
- از App Router، Pages Router، RSC، Server Actions، میدلور و ISR پشتیبانی میکنه؛ هدف اصلی استقرار Cloudflare Workers هست
- دسترسی به bindingها (D1, R2, KV, AI) مستقیم با ایمپورت از cloudflare:workers
- هنوز جای خالی سازگاری داره؛ قبل از مهاجرت vinext check رو اجرا کن
- در برابر OpenNext بالغتر ولی سنگینتر، vinext سبکتر و سریعتر ولی با پوشش کمتر




