I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

مقارنة بين Webpack و Vite: ليه كل مطوري React نقلوا لـ Vite؟

مقارنة بين Webpack و Vite: ليه كل مطوري React نقلوا لـ Vite؟ يا هلا بيك يا بشمهندس! فكرت في يوم من الأيام وأنت قاعد تشتغل على مشروع رياكت (React) كبير، ليه لما

مقارنة بين Webpack و Vite: ليه كل مطوري React نقلوا لـ Vite؟
Reading Count: 5

مقارنة بين Webpack و Vite: ليه كل مطوري React نقلوا لـ Vite؟

يا هلا بيك يا بشمهندس! فكرت في يوم من الأيام وأنت قاعد تشتغل على مشروع رياكت (React) كبير، ليه لما بتدوس زرار السيف (Save) بتلحق تشرب كوباية الشاي، أو تفتح الموبايل تقلب في الفيس لحد ما السيرفر يحصل له ريلود (Reload)؟ الوجع ده كلنا عشناه، خصوصاً مع أداة تجميع الكود القديمة والطيبة ويب باك (Webpack). لفترة طويلة، كانت هي الملك المتوج، بس الدنيا اتغيرت وظهر بطل جديد اسمه فيت (Vite) غير قواعد اللعبة تماماً.

في المقال ده، هناخد رحلة تفصيلية نفهم فيها ليه كل مطوري رياكت (React Developers) سابوا ويب باك (Webpack) وراحوا لـ فيت (Vite)، وإزاي الأداة دي غيرت مفهوم سرعة بيئة التطوير (Development Environment) وبشكل خاص التحديث الحطحي السريع (Hot Module Replacement - HMR).

إيه هو المشكلة الحقيقية مع Webpack؟ (القصة باختصار)

علشان تفهم ليه كل الناس نقلت، لازم تفهم المشكلة فين أصلاً. لما كنت بتشتغل بـ ويب باك (Webpack) أو حتى أداة الإعدادات الجاهزة كرييت رياكت أب (Create React App)، كان النظام بيعتمد على تجميع أو حزم الكود (Bundling) من أول وجديد لكل الملفات قبل ما السيرفر يشتغل.

تخيل عندك مشروع فيه ألف ملف جافا سكريبت (JavaScript Files). الـ Webpack كان بيقعد يلف على كل ملف، ويعمله معالجة، ويجمعه في حزمة ضخمة (Bundle) وبعدين يعرضه في المتصفح (Browser). كل ما المشروع كبر، كل ما وقت البناء (Build Time) ووقت الـ HMR زاد وبقى ممل جداً.

دخول البطل: إزاي بيشتغل Vite؟

كلمة Vite دي كلمة فرنسية معناها "سريع"، وده حقيقي تماماً. فكرة فيت (Vite) مبنية على فكرة ثورية مختلفة تماماً عن ويب باك (Webpack). بدل ما يعمل تجميع لكل الكود الأول، فيت بيقسم المشروع لقسمين أساسيين:

  • أكواد التبعيات (Dependencies): الحاجات اللي زي مكتبات رياكت (React) ودي غالباً مش بتتغير. فيت بيعملها تجميع مرة واحدة باستخدام أداة خارقة اسمها إيسبولد (esbuild)، ودي مكتوبة بلغة جو (Go) وسريعة بشكل مرعب.
  • مصدر الكود بتاعك (Source Code): الملفات اللي أنت بتكتبها بإيدك. دي فيت مش بيجمعها خالص وهو بيشغل السيرفر! هو بيستنى المتصفح يطلب الملف، وساعتها بيعمله معالجة فورية ويقدمه باستخدام وحدات الكود الحديثة (ES Modules - ESM).

النتيجة؟ وقت تشغيل السيرفر (Dev Server Start) بيبقى في حدود أجزاء من الثانية، مهما كان حجم مشروعك كبير!

مقارنة مباشرة: Webpack vs Vite

تعال نبص بالأرقام والواقع على الفرق بين الاتنين:

  • سرعة تشغيل السيرفر (Cold Start): مع Webpack ممكن تاخد من 10 ثواني لـ دقيقة في المشاريع الكبيرة. مع Vite بتفتح في أقل من ثانية تقريباً!
  • التحديث السريع (HMR): في Webpack كل ما المشروع يكبر، الـ HMR بيتقل. في Vite، مهما كبر المشروع، الـ HMR بيester اللحظة اللي بتعمل فيها حفظ للملف.
  • الـ Bundling للإنتاج (Production Build): فيت بيستخدم أداة متطورة اسمها Rollup للإنتاج، وهي منظمة جداً وبتديك كود مضغوط وخفيف (Optimized Build).

إزاي تحول مشروعك القديم من Create React App لـ Vite؟

لو عندك مشروع قديم شغال بـ Create React App وعايز تنقله لـ Vite وتستمتع بالسرعة، الخطوات بسيطة جداً. تعال نشوف إزاي نعمل كده خطوة بخطوة:

الخطوة الأولى: مسح الحزم القديمة وإضافة Vite

افتح الترمنال (Terminal) في فولدر المشروع، واحذف حزم كرييت رياكت أب:

npm uninstall react-scripts

بعدين ثبّت فيت وحزمة تشغيل رياكت الخاصة بيه:

npm install -D vite @vitejs/plugin-react

الخطوة الثانية: تعديل ملف HTML الرئيسي

في مشاريع الـ CRA القديمة، ملف الـ index.html كان جوه فولدر اسمه public وكان بيستخدم متغيرات زي %PUBLIC_URL%. في Vite، انقل ملف index.html ليكون بره في الجذر الرئيسي للمشروع (Root Directory)، وشيل أي متغيرات قديمة، وضيف سكريبت التشغيل العادي في آخره جوه الـ body بالشكل ده:

<!doctype html>
<html lang="ar">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>مشروعي السريع بـ Vite</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/src/main.jsx"></script>
  <body>
</html>

الخطوة الثالثة: إنشاء ملف إعدادات Vite

في جذر المشروع، اعمل ملف جديد سميه vite.config.js واكتب فيه الإعداد البسيط ده علشان يدعم رياكت:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
})

الخطوة الرابعة: تعديل أوامر الـ package.json

أخيراً، افتح ملف package.json وعدل أدوَار التشغيل (Scripts) علشان تستخدم فيت بدل العجوز ويب باك:

"scripts": {
  "dev": "vite",
  "build": "vite build",
  "preview": "vite preview"
}

بس يا سيدي! ادخل دلوقتي على الترمنال واكتب npm run dev واتفرج على السرعة الجنونية اللي السيرفر هيفتح بيها.

خاتمة ونصيحة من أخ

التطور التكنولوجي في عالم البرمجة مش بيوقف، واللي بيقعد يشتغل بالطرق القديمة بيضيع وقت وجهد كتير على الفاضي. الانتقال من Webpack لـ Vite مابقاش "رفاهية"، ده بقى أساسي علشان تعلي الإنتاجية بتاعتك وتستمتع وأنت بتكتب كود. نصيحتي ليك: متخافش من التغيير، جرب دايماً الأدوات الحديثة، واقرا الـ Documentation، وخلي دائماً تركيزك على حل المشكلات البزنس ومشكلة بطء الأدوات!


Share

Related posts

Aug 26, 2026 • 2 min read
Reading Count: 8
التعامل مع الـ Error Boundaries في تطبيقات React

تخيل معايا السيناريو ده: قعدت ساعات طويلة تظبط في تطبيق ريياكت (React) وشغال زي الفل، وفجأة المداوم...

Aug 25, 2026 • 2 min read
Reading Count: 9
استخدام Zod مع React Hook Form لعمل Validation محكم

يا هلا بيك يا بشمهندس في عالم تطوير الويب (Web Development). تعال نتكلم في نقطة أكيد وجعت دماغك في أ...

Aug 24, 2026 • 2 min read
Reading Count: 10
هندسة الـ React Server Components في Next.js 14

يا هلا بيك يا صديقي المبرمج في عالم تطوير الويب (Web Development)! فكر معايا كده، كام مرة اشتغلت على...