مولّد إعدادات Webpack
كتابة webpack.config.js من الذاكرة تعني تذكّر الشكل الدقيق لـ output، وتعبير test النمطي لكل محمّل، وكيفية ربط الإضافات. يحوّل هذا المولّد ذلك إلى نموذج قصير: حدّد ملف الإدخال ومجلد الإخراج ووضع البناء، ثم علّم الأجزاء التي تحتاجها، وهي TypeScript وBabel ومحمّل CSS وHtmlWebpackPlugin وخادم تطوير. ينتج إعدادات webpack 5 نظيفة وجاهزة للنسخ، مع أسماء ملفات [contenthash] وoutput.clean مضمّنة مسبقًا.
كيفية إنشاء إعدادات webpack
-
1
حدّد entry والإخراج
اكتب ملف الإدخال (الافتراضي `./src/index.js`) ومجلد الإخراج (الافتراضي `dist`).
-
2
اختر الوضع
اختر `production` أو `development`. تُكتب القيمة مباشرة في الحقل `mode`.
-
3
فعّل المحمّلات والإضافات
فعّل حسب الحاجة: TypeScript (`ts-loader`)، وBabel (`babel-loader`)، ومحمّل CSS (`style-loader` + `css-loader`)، و`HtmlWebpackPlugin`، وخادم تطوير.
-
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.
الأداة متاحة بلغات أخرى
- Webpack-Konfigurationsgenerator [DE]
- Gerador de Configuração Webpack [PT]
- Generador de Configuración de Webpack [ES]
- Webpack設定ジェネレーター [JA]
- Webpack-configuratiegenerator [NL]
- Trình tạo cấu hình webpack [VI]
- ตัวสร้างการตั้งค่า Webpack [TH]
- Generator Konfigurasi Webpack [ID]
- Webpack 설정 생성기 [KO]
- Webpack-konfigurationsgenerator [SV]
- Générateur de configuration Webpack [FR]
- Generator konfiguracji webpack [PL]
- Generatore di Configurazione Webpack [IT]
- Генератор конфигурации webpack [RU]
- Webpack Yapılandırma Oluşturucu [TR]
- Webpack 配置生成器 [ZH]
- Webpack Config Generator [EN]