رفتن به محتوای اصلی

Vite ۸ و Rolldown؛ ساخت ۱۰ تا ۳۰ برابر سریع‌تر

  • سینا قربانیان
  • ۱۷ آبان ۱۴۰۵
  • ۱۰ دقیقه مطالعه
  • ۰ بازدید
تصویر شاخص مقاله Vite 8 و باندلر Rolldown
فهرست مطالب
  1. Vite ۸ چه چیزی را تغییر داد؟
  2. Rolldown و Oxc چه هستند؟
  3. Vite ۸ واقعاً ۱۰ تا ۳۰ برابر سریع‌تر است؟
  4. تغییرات ناسازگار Vite ۸ کدام‌اند؟
  5. چطور از Vite ۷ به Vite ۸ مهاجرت کنیم؟
  6. Vite ۸ برای پروژه‌های وردپرسی هم مهم است؟
  7. چه قابلیت‌های جدید دیگری در Vite ۸ آمده است؟
  8. محدودیت‌ها: چه زمانی ارتقا به Vite ۸ را عقب بیندازیم؟
  9. از تجربه تیم siloow
  10. جمع‌بندی
  11. منابع
  12. سوالات متداول درباره Vite ۸
  13. Vite ۸ چه زمانی منتشر شد؟
  14. Rolldown چیست و چه ربطی به Vite دارد؟
  15. آیا پلاگین‌های Vite ۷ در Vite ۸ کار می‌کنند؟
  16. آیا باید تنظیمات vite.config را تغییر دهم؟
  17. ارتقا به Vite ۸ سایت را برای کاربر سریع‌تر می‌کند؟

Vite 8 نسخه اصلی ابزار ساخت Vite است که در ۱۲ مارس ۲۰۲۶ منتشر شد و بزرگ‌ترین تغییرش این است که Rolldown، باندلر نوشته‌شده با Rust، جایگزین ترکیب قبلی esbuild (برای توسعه) و Rollup (برای ساخت production) شده است. عبارت «۱۰ تا ۳۰ برابر سریع‌تر» در اطلاعیه رسمی به مقایسه Rolldown با Rollup در بنچمارک‌های پروژه Rolldown اشاره دارد، نه تضمین سرعت برای هر پروژه.

نویسنده: تیم siloow (سیلو سولوشن) — آخرین به‌روزرسانی: آبان ۱۴۰۵

وضعیت تا آبان ۱۴۰۵: Vite ۸ از ۱۲ مارس ۲۰۲۶ نسخه پایدار است و به Node.js ۲۰.۱۹ یا ۲۲.۱۲ به بالا نیاز دارد. طبق اطلاعیه رسمی، بیشتر پلاگین‌های موجود Vite بدون تغییر کار می‌کنند و یک لایه سازگاری، تنظیمات قدیمی esbuild و rollupOptions را خودکار تبدیل می‌کند؛ با این حال راهنمای مهاجرت چند تغییر ناسازگار مهم را فهرست کرده است.

در این مقاله توضیح می‌دهیم Rolldown و Oxc چه نقشی دارند، ادعای سرعت دقیقاً چه معنایی دارد، کدام تنظیمات تغییر کرده‌اند و یک مسیر مهاجرت امن از Vite ۷ به ۸ پیشنهاد می‌کنیم.

Vite ۸ چه چیزی را تغییر داد؟

Vite ۸ معماری داخلی ساخت را یکپارچه کرد: تا Vite ۷، پیش‌باندل وابستگی‌ها و تبدیل TypeScript و JSX در حالت توسعه با esbuild و ساخت production با Rollup انجام می‌شد؛ در Vite ۸ هر دو کار با Rolldown انجام می‌شود. طبق اطلاعیه رسمی Vite ۸، این نسخه با Rolldown به‌عنوان یک باندلر واحد و یکپارچه مبتنی بر Rust عرضه شده است.

بخشVite 7Vite 8
پیش‌باندل وابستگی‌ها در توسعهesbuildRolldown
ساخت productionRollupRolldown
تبدیل JS و TypeScriptesbuildOxc
فشرده‌سازی جاوااسکریپتesbuildOxc Minifier
فشرده‌سازی CSSesbuildLightning CSS
حداقل Node.js۲۰.۱۹ یا ۲۲.۱۲۲۰.۱۹ یا ۲۲.۱۲ (بدون تغییر)
تنظیمات باندلرbuild.rollupOptionsbuild.rolldownOptions
مقایسه زنجیره ابزار Vite ۷ و Vite ۸ بر اساس اطلاعیه و راهنمای مهاجرت vite.dev

یک نکته کمتر دیده‌شده: طبق همان اطلاعیه، حجم نصب Vite ۸ حدود ۱۵ مگابایت بیشتر از Vite ۷ است؛ حدود ۱۰ مگابایت از Lightning CSS که حالا وابستگی عادی است و حدود ۵ مگابایت از فایل اجرایی Rolldown.

Rolldown و Oxc چه هستند؟

Rolldown یک باندلر جاوااسکریپت نوشته‌شده با Rust است که تیم VoidZero آن را با هدف سازگاری با API پلاگین Rollup و سرعتی در حد esbuild ساخته است. Oxc مجموعه‌ای از ابزارهای کامپایلر جاوااسکریپت (پارسر، تبدیل‌گر و فشرده‌ساز) است که آن هم با Rust نوشته شده است. در Vite ۸ این سه ابزار یک زنجیره هم‌سو می‌سازند: Vite به‌عنوان ابزار ساخت، Rolldown به‌عنوان باندلر و Oxc به‌عنوان کامپایلر.

اطلاعیه رسمی می‌گوید این هم‌سویی باعث می‌شود رفتار از مرحله تجزیه کد تا فشرده‌سازی یکسان باشد و تحلیل معنایی Oxc به tree-shaking بهتر در Rolldown کمک کند. مزیت عملی دیگر، حذف ناهمخوانی‌های قدیمی بین حالت توسعه (esbuild) و production (Rollup) است که گاهی باعث می‌شد کدی در توسعه کار کند و در build خراب شود.

مقایسه زنجیره ابزار Vite 7 با esbuild و Rollup و Vite 8 با Rolldown و Oxc
زنجیره ابزار Vite ۷ و Vite ۸

Vite ۸ واقعاً ۱۰ تا ۳۰ برابر سریع‌تر است؟

ادعای «۱۰ تا ۳۰ برابر سریع‌تر» در اطلاعیه رسمی Vite ۸ به سرعت Rolldown در مقایسه با Rollup در بنچمارک‌های مخزن Rolldown مربوط است و اطلاعیه می‌گوید سرعت آن با esbuild برابر است. یعنی اگر پروژه شما قبلاً زمان زیادی در مرحله Rollup می‌گذراند، احتمالاً بهبود بزرگی می‌بینید؛ اما زمان کل build به عوامل دیگری مثل بررسی TypeScript، پلاگین‌ها و پردازش تصاویر هم بستگی دارد.

اطلاعیه رسمی چند عدد گزارش‌شده از شرکت‌هایی که نسخه پیش‌نمایش را آزمایش کردند هم آورده است:

  • Linear: کاهش زمان build production از ۴۶ ثانیه به ۶ ثانیه.
  • Ramp: کاهش ۵۷ درصدی.
  • Mercedes-Benz.io: کاهش تا ۳۸ درصد.
  • Beehiiv: کاهش ۶۴ درصدی.

این اعداد گزارش خود شرکت‌ها هستند و برای پروژه‌های مختلف متفاوت خواهند بود. بهترین کار این است که زمان build پروژه خودتان را قبل و بعد از ارتقا اندازه بگیرید.

نکته: سرعت build روی تجربه توسعه‌دهنده و هزینه CI اثر دارد، اما مستقیماً سایت شما را برای کاربر سریع‌تر نمی‌کند. سرعت سایت برای کاربر به حجم و کیفیت خروجی، تصاویر و سرور بستگی دارد.

تغییرات ناسازگار Vite ۸ کدام‌اند؟

تغییرات ناسازگار Vite ۸ بیشتر به تنظیمات پیشرفته باندلر مربوط است و در بسیاری از پروژه‌های ساده، لایه سازگاری آن‌ها را خودکار مدیریت می‌کند. طبق راهنمای رسمی مهاجرت، مهم‌ترین موارد:

تغییرجزئیاتاقدام
تغییر نام تنظیماتbuild.rollupOptions به build.rolldownOptionsتغییر نام در vite.config
گزینه esbuildمنسوخ و خودکار به oxc تبدیل می‌شودانتقال تنظیمات به oxc
manualChunksشکل شیء حذف شد، شکل تابع منسوخ استاستفاده از codeSplitting
import پیش‌فرض CommonJSقواعد تشخیص تغییر کردموقتاً legacy.inconsistentCjsInterop: true
decoratorهای بومیOxc آن‌ها را تبدیل نمی‌کنداستفاده از Babel یا SWC
مرورگر هدف پیش‌فرضChrome و Edge از ۱۱۱، Firefox از ۱۱۴، Safari از ۱۶.۴بررسی مخاطبان مرورگر قدیمی
خروجی‌های system و amdپشتیبانی نمی‌شودتغییر فرمت خروجی
import.meta.url در UMD و IIFEدیگر polyfill نمی‌شودبازبینی کتابخانه‌هایی که با این فرمت‌ها build می‌شوند
تغییرات ناسازگار مهم Vite ۸ بر اساس راهنمای مهاجرت vite.dev
// vite.config.ts — قبل از Vite 8
export default defineConfig({
build: {
rollupOptions: {
output: { manualChunks: { vendor: ['react', 'react-dom'] } },
},
},
esbuild: { drop: ['console'] },
})

// vite.config.ts — Vite 8
export default defineConfig({
build: {
rolldownOptions: {
// شکل شیء manualChunks حذف شد؛ از codeSplitting استفاده کنید
},
},
oxc: {
// تنظیمات تبدیل جاوااسکریپت حالا با Oxc است
},
})

چطور از Vite ۷ به Vite ۸ مهاجرت کنیم؟

مسیر امن مهاجرت به Vite ۸ برای پروژه‌های بزرگ، دو مرحله‌ای است: ابتدا روی Vite ۷ بسته rolldown-vite را امتحان کنید تا مشکلات مخصوص Rolldown جدا شوند، سپس به Vite ۸ بروید. این همان توصیه اطلاعیه رسمی است. گام‌ها:

  1. مطمئن شوید Node.js روی سیستم توسعه، CI و سرور build نسخه ۲۰.۱۹ یا ۲۲.۱۲ به بالاست.
  2. پلاگین‌های Vite پروژه را به آخرین نسخه ببرید؛ بیشتر آن‌ها طبق اطلاعیه رسمی بدون تغییر کار می‌کنند.
  3. برای پروژه‌های بزرگ، ابتدا rolldown-vite را روی Vite ۷ نصب و build را آزمایش کنید.
  4. به Vite ۸ ارتقا دهید و هشدارهای منسوخ‌شدن (esbuild، rollupOptions) را با نام‌های جدید جایگزین کنید.
  5. خروجی build را با نسخه قبلی مقایسه کنید: حجم فایل‌ها، import‌های CommonJS و رفتار در مرورگرهای هدف.
  6. اگر از React استفاده می‌کنید، ارتقای @vitejs/plugin-react به نسخه ۶ را بررسی کنید که Babel را از وابستگی‌هایش حذف کرده و برای React Refresh از Oxc استفاده می‌کند.
# بررسی نسخه Node.js (حداقل 20.19 یا 22.12)
node -v

# پروژه‌های بزرگ: ابتدا روی Vite 7 با rolldown-vite تست کنید
npm install vite@npm:rolldown-vite@latest

# سپس ارتقا به Vite 8
npm install vite@^8.0.0
npm run build
مراحل مهاجرت امن از Vite 7 به Vite 8 با rolldown-vite
مسیر مهاجرت به Vite ۸

اگر پروژه React شما از React Compiler استفاده می‌کند، طبق اطلاعیه رسمی پلاگین React نسخه ۶ یک helper به نام reactCompilerPreset برای پیکربندی آن دارد. برای آشنایی با تحولات اخیر React، مقاله React 19.3 و برای مقایسه با رویکرد Next.js که باندلر خودش (Turbopack) را دارد، مقاله Next.js 16 را ببینید.

Vite ۸ برای پروژه‌های وردپرسی هم مهم است؟

بله، اگر قالب یا افزونه شما فایل‌های جاوااسکریپت و CSS را با Vite می‌سازد. بسیاری از قالب‌سازهای وردپرس از Vite برای build فایل‌های فرانت‌اند، Tailwind یا کامپوننت‌های Vue و React داخل قالب استفاده می‌کنند. در این پروژه‌ها دو نکته Vite ۸ اهمیت دارد: تغییر مرورگر هدف پیش‌فرض (که روی سازگاری خروجی با مرورگرهای قدیمی‌تر کاربران اثر دارد) و تغییر قواعد import پیش‌فرض CommonJS برای کتابخانه‌های قدیمی مثل برخی پلاگین‌های jQuery. بلاک‌های گوتنبرگ معمولاً با ابزار رسمی @wordpress/scripts ساخته می‌شوند که مبتنی بر webpack است و مستقیماً تحت تأثیر Vite ۸ نیستند؛ نکات سازگاری آن‌ها را در راهنمای Block API v3 نوشته‌ایم.

چه قابلیت‌های جدید دیگری در Vite ۸ آمده است؟

Vite ۸ جدا از تغییر باندلر، چند قابلیت کوچک‌تر اما کاربردی هم دارد که طبق اطلاعیه رسمی به این شرح‌اند:

  • Devtools یکپارچه: گزینه devtools برای بررسی وضعیت ساخت و ماژول‌ها.
  • پشتیبانی داخلی از مسیرهای tsconfig: گزینه resolve.tsconfigPaths برای aliasهای TypeScript، که به‌طور پیش‌فرض خاموش است چون کمی هزینه کارایی دارد.
  • پشتیبانی داخلی از emitDecoratorMetadata برای پروژه‌های TypeScript که به آن نیاز دارند.
  • import فایل‌های .wasm?init در SSR.
  • server.forwardConsole: ارسال لاگ‌های مرورگر به ترمینال؛ طبق اطلاعیه، وقتی یک ایجنت برنامه‌نویسی تشخیص داده شود به‌طور خودکار فعال می‌شود.

اطلاعیه رسمی همچنین از برنامه‌های آینده مثل حالت آزمایشی Full Bundle Mode در توسعه و پایدارسازی Environment API خبر داده است؛ این موارد هنوز جزو قابلیت‌های پایدار نیستند.

محدودیت‌ها: چه زمانی ارتقا به Vite ۸ را عقب بیندازیم؟

  • اگر پروژه به decoratorهای بومی بدون Babel یا SWC وابسته است.
  • اگر خروجی system یا amd لازم دارید، یا از @vitejs/plugin-legacy برای تبدیل به ES5 استفاده می‌کنید؛ راهنمای مهاجرت این موارد را جزو محدودیت‌ها آورده است.
  • اگر پلاگین اختصاصی Rollup دارید که از hookهای پشتیبانی‌نشده مثل renderDynamicImport یا resolveFileUrl استفاده می‌کند.
  • اگر محدودیت فضای دیسک یا حجم image در CI دارید، افزایش حدود ۱۵ مگابایتی حجم نصب را در نظر بگیرید.

از تجربه تیم siloow

تیم siloow در قالب‌های اختصاصی وردپرس و وب‌اپ‌های React از Vite برای ساخت فایل‌های فرانت‌اند استفاده می‌کند. تجربه ما این است که در پروژه‌های کوچک‌تر مثل قالب یک کلینیک، زمان build از ابتدا کوتاه بود و ارتقا بیشتر برای یکپارچگی و پشتیبانی بلندمدت ارزش داشت تا سرعت. در پروژه‌های بزرگ‌تر مثل وب‌اپ انبار و فروش با تعداد زیادی کامپوننت، کوتاه شدن build در CI محسوس‌تر است. تنها جایی که وقت گذاشتیم، کتابخانه‌های قدیمی CommonJS بود که با قواعد جدید import پیش‌فرض رفتار متفاوتی داشتند؛ پس قبل از انتشار، صفحاتی را که به کتابخانه‌های قدیمی وابسته‌اند جداگانه تست کنید.

جمع‌بندی

  • Vite ۸ در ۱۲ مارس ۲۰۲۶ منتشر شد و Rolldown را جایگزین esbuild و Rollup کرد.
  • Oxc تبدیل و فشرده‌سازی جاوااسکریپت و Lightning CSS فشرده‌سازی CSS را بر عهده دارند.
  • «۱۰ تا ۳۰ برابر» مقایسه Rolldown با Rollup در بنچمارک‌هاست؛ سرعت واقعی پروژه خود را اندازه بگیرید.
  • build.rollupOptions به build.rolldownOptions و esbuild به oxc تغییر کرده است.
  • پروژه‌های بزرگ ابتدا با rolldown-vite روی Vite ۷ تست کنند، سپس به Vite ۸ بروند.

اگر قالب وردپرسی یا وب‌اپلیکیشنی دارید که فرایند build آن کند یا قدیمی شده و برای به‌روزرسانی زنجیره ابزار به کمک نیاز دارید، خدمات توسعه و پشتیبانی وب siloow را ببینید. برای آشنایی با رویکرد جدید Vue که آن هم در اکوسیستم Vite رشد کرده، مقاله Vue ۳.۶ و Vapor Mode را بخوانید و خبرهای بعدی را در مگ siloow دنبال کنید.

منابع

سوالات متداول درباره Vite ۸

Vite ۸ چه زمانی منتشر شد؟

Vite ۸ در ۱۲ مارس ۲۰۲۶ منتشر شد. این نسخه به Node.js ۲۰.۱۹ یا ۲۲.۱۲ به بالا نیاز دارد، همان حداقلی که Vite ۷ داشت.

Rolldown چیست و چه ربطی به Vite دارد؟

Rolldown یک باندلر جاوااسکریپت نوشته‌شده با Rust است که با API پلاگین Rollup سازگار است. در Vite ۸ جایگزین esbuild در توسعه و Rollup در ساخت production شده است.

آیا پلاگین‌های Vite ۷ در Vite ۸ کار می‌کنند؟

طبق اطلاعیه رسمی، بیشتر پلاگین‌های موجود بدون تغییر کار می‌کنند، چون Rolldown از API پلاگین Rollup و Vite پشتیبانی می‌کند. پلاگین‌هایی که از hookهای پشتیبانی‌نشده یا شیء bundle به شکل خاص استفاده می‌کنند ممکن است نیاز به به‌روزرسانی داشته باشند.

آیا باید تنظیمات vite.config را تغییر دهم؟

در بسیاری از پروژه‌ها لایه سازگاری تنظیمات esbuild و rollupOptions را خودکار تبدیل می‌کند. اما بهتر است build.rollupOptions را به build.rolldownOptions و esbuild را به oxc تغییر دهید تا هشدار منسوخ‌شدن نگیرید.

ارتقا به Vite ۸ سایت را برای کاربر سریع‌تر می‌کند؟

هدف اصلی Vite ۸ سرعت build و تجربه توسعه است. سرعت سایت برای کاربر به حجم خروجی، تصاویر و سرور بستگی دارد، هرچند tree-shaking بهتر ممکن است حجم خروجی را کمی تغییر دهد.

منبع: vite.dev

اشتراک‌گذاری