مولّد إعدادات Webpack

webpack.config.js
النتائج

كتابة webpack.config.js من الذاكرة تعني تذكّر الشكل الدقيق لـ output، وتعبير test النمطي لكل محمّل، وكيفية ربط الإضافات. يحوّل هذا المولّد ذلك إلى نموذج قصير: حدّد ملف الإدخال ومجلد الإخراج ووضع البناء، ثم علّم الأجزاء التي تحتاجها، وهي TypeScript وBabel ومحمّل CSS وHtmlWebpackPlugin وخادم تطوير. ينتج إعدادات webpack 5 نظيفة وجاهزة للنسخ، مع أسماء ملفات [contenthash] وoutput.clean مضمّنة مسبقًا.

كيفية إنشاء إعدادات webpack

  1. 1

    حدّد entry والإخراج

    اكتب ملف الإدخال (الافتراضي `./src/index.js`) ومجلد الإخراج (الافتراضي `dist`).

  2. 2

    اختر الوضع

    اختر `production` أو `development`. تُكتب القيمة مباشرة في الحقل `mode`.

  3. 3

    فعّل المحمّلات والإضافات

    فعّل حسب الحاجة: TypeScript (`ts-loader`)، وBabel (`babel-loader`)، ومحمّل CSS (`style-loader` + `css-loader`)، و`HtmlWebpackPlugin`، وخادم تطوير.

  4. 4

    انسخ الإعدادات

    يُحدَّث `webpack.config.js` مباشرة. استخدم زر النسخ والصقه في جذر مشروعك.

الإخراج الافتراضي

بالقيم الافتراضية (وضع production، وTypeScript، وBabel، ومحمّل CSS، وHtmlWebpackPlugin) يُنتج المولّد:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.[contenthash].js',
    clean: true,
  },
  resolve: { extensions: ['.ts','.tsx','.js'] },
  module: {
    rules: [
      { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ },
      { test: /\.jsx?$/, exclude: /node_modules/, use: 'babel-loader' },
      { test: /\.css$/, use: ['style-loader', 'css-loader'] },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({ template: './src/index.html' }),
  ],
};

ما الذي يكتبه كل خيار

الخيار ما يضيفه إلى الإعدادات
entry قيمة entry، مثل entry: './src/index.js'.
مجلد الإخراج output.path، يُحَل عبر path.resolve(__dirname, 'dist').
mode mode: 'production' أو mode: 'development'.
TypeScript قاعدة ts-loader للملفات .ts/.tsx، مع إضافة هذه الامتدادات إلى resolve.
Babel قاعدة babel-loader للملفات .js/.jsx.
محمّل CSS قاعدة تربط style-loader وcss-loader للملفات .css.
HtmlWebpackPlugin سطر require مع new HtmlWebpackPlugin({ template: './src/index.html' }).
خادم التطوير كتلة devServer تقدّم مجلد الإخراج على المنفذ 3000 مع إعادة التحميل الفوري (hot reload).

خيارات ثابتة في الإخراج

لإبقاء الإعدادات الأولية بسيطة، تُضبط بعض القيم نيابةً عنك بدلًا من عرضها كحقول:

  • أسماء ملفات مع تجزئة (hash). output.filename هو دائمًا bundle.[contenthash].js، ما يُبطل ذاكرة المتصفح المؤقتة في كل مرة تتغير فيها الحزمة.
  • إخراج نظيف. output.clean: true يفرّغ مجلد الإخراج في كل عملية بناء، وهو بديل clean-webpack-plugin في webpack 5.
  • يُدمَج CSS في الحزمة ولا يُستخرَج. يحقن style-loader الأنماط عبر JavaScript. لإخراج ملف .css منفصل في الإنتاج، أضف MiniCssExtractPlugin بنفسك.
  • أساسيات خادم التطوير. عند تفعيله يضبط devServer القيم static وport: 3000 وhot: true. أضف خيارات مثل historyApiFallback أو proxy يدويًا إذا احتاجها تطبيقك.

كيف توسّعه أكثر

الملف المُنتَج هو نقطة بداية، وليس إعدادًا إنتاجيًا كاملًا. الخطوات التالية الشائعة التي تضيفها بنفسك: MiniCssExtractPlugin لاستخراج CSS، وsass-loader للملفات .scss، ووحدات asset في webpack 5 للصور والخطوط، وقيمة devtool لخرائط المصدر (source maps)، وكتلة splitChunks لتقسيم الكود.

الأسئلة الشائعة

لـ webpack 5. يستخدم الإخراج output.clean وأسماء ملفات [contenthash]، وهي أعراف webpack 5 الحديثة، لذا لا حاجة إلى إضافة تنظيف إضافية.

لا، فهو يكتب دائمًا webpack.config.js بلغة JavaScript. تفعيل خيار TypeScript يضيف قاعدة ts-loader كي يترجم webpack شفرتك .ts/.tsx؛ وهو لا يغيّر صيغة ملف الإعدادات نفسه.

كتلة devServer المُنتَجة تستخدم المنفذ 3000 مع إعادة التحميل الفوري. غيّر قيمة port في الملف المنسوخ إذا احتجت منفذًا آخر.

نعم. كل خيار يضيف قاعدته الخاصة (ts-loader للنمط .tsx?، وbabel-loader للنمط .jsx?)، فيمكنك تفعيل أحدهما أو الآخر أو كليهما حسب طريقة الترجمة في مشروعك.

أدوات ذات صلة

مرجع جدول ASCII

جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.

مرجع أحرف HTML

قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.

عدّاد FPS

قِس معدل الإطارات FPS في المتصفح عبر requestAnimationFrame: تنعيم، وأدنى وأقصى معدل إطارات، وحد تنبيه، ورسم بياني اختياري. يعمل محليًا بلا رفع ملفات وبلا API.

أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator)

إزالة التشفير من كود جافا سكريبت مُصغَّر أو مُعبَّأ باستخدام إعادة تسمية المتغيرات، وفك ترميز السلاسل النصية ومصفوفات البيانات، بالإضافة إلى عكس تسطيح تدفق التحكم وتحسين هيكله.

مرجع اختصارات لوحة المفاتيح

ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.

مولد تراخيص

قم بإنشاء النص الكامل لترخيصات المصدر المفتوح مع إدخال اسمك والسنة المقابلة، ويشمل ذلك تراخيص MIT وApache 2.0 وGPLv3 وBSD-3 وMPL-2.0 وCC.

الأداة متاحة بلغات أخرى