أنواع التخصيص
إلى جانب تصدير كائن تخصيص واحد، هناك طرق أخرى تغطّي احتياجات مختلفة.
تصدير دالّة
ستجد عاجلاً أم آجلاً حاجة إلى التمييز داخل webpack.config.js بين بناء التطوير وبناء الإنتاج. وثمّة طرق متعددة لذلك. من بينها أن تُصدّر دالّة من ملف تخصيص webpack بدلاً من تصدير كائن. سيتمّ استدعاء هذه الدالّة بمعاملين:
- بيئة (environment) بوصفها المعامل الأول. راجع توثيق خيارات البيئة في الـ CLI لأمثلة على الصياغة.
- خريطة خيارات (
argv) بوصفها المعامل الثاني. تصف هذه الخريطة الخيارات الممرَّرة إلى webpack، بمفاتيح مثلoutput-pathوmode.
-export default {
+export default function(env, argv) {
+ return {
+ mode: env.production ? 'production' : 'development',
+ devtool: env.production ? 'source-map' : 'eval',
plugins: [
new MinimizerPlugin({
minimizerOptions: {
+ compress: argv.mode === 'production' // فقط في حال تمرير `--mode production`
}
})
]
+ };
};تصدير Promise
سيُشغّل webpack الدالّة المُصدَّرة من ملف التخصيص، وينتظر منها إرجاع Promise. وهذا مفيد حين تحتاج إلى تحميل متغيّرات التخصيص بشكل غير متزامن.
export default () =>
new Promise((resolve, reject) => {
setTimeout(() => {
resolve({
entry: "./app.js",
/* ... */
});
}, 5000);
});تصدير تخصيصات متعددة
عوضاً عن تصدير كائن أو دالّة تخصيص واحدة، يمكنك تصدير عدّة تخصيصات (وقد دُعمت الدوال المتعددة منذ webpack 3.1.0). وعند تشغيل webpack، تُبنى كل التخصيصات معاً. وهذا مفيد مثلاً عند حزم مكتبة لعدّة أهداف (targets) كـ AMD و CommonJS:
export default [
{
output: {
filename: "./dist-amd.js",
libraryTarget: "amd",
},
name: "amd",
entry: "./app.js",
mode: "production",
},
{
output: {
filename: "./dist-commonjs.js",
libraryTarget: "commonjs",
},
name: "commonjs",
entry: "./app.js",
mode: "production",
},
];dependencies
إن كان لديك تخصيص يعتمد على ناتج تخصيص آخر، فيمكنك تحديد قائمة بالاعتماديات عبر مصفوفة dependencies.
webpack.config.js
export default [
{
name: "client",
target: "web",
// …
},
{
name: "server",
target: "node",
dependencies: ["client"],
},
];التوازي
عند تصدير تخصيصات متعددة، يمكنك استخدام الخيار parallelism على مصفوفة التخصيصات لتحديد الحدّ الأقصى لعدد الـ compilers التي ستعمل بالتوازي.
- النوع:
number - متاح: 5.22.0+
webpack.config.js
const config = [
{
// التخصيص-1
},
{
// التخصيص-2
},
];
config.parallelism = 1;
export default config;


