واجهة سطر الأوامر
لاستخدام أسهل وتوزيع أوضح للإعدادات، يمكن ضبط webpack عبر ملف webpack.config.js. أي parameters ترسلها إلى CLI سيتم ربطها بالـ parameter المقابل داخل ملف الإعدادات.
اقرأ دليل التثبيت إذا لم يكن webpack وCLI مثبتين لديك.
Commands
يوفر webpack-cli مجموعة أوامر تجعل العمل مع webpack أسهل. افتراضيًا، يأتي webpack مع الأوامر التالية:
| Command | Usage | الوصف |
|---|---|---|
build | build|bundle|b [entries...] [options] | يشغّل webpack، وهو الأمر الافتراضي ويمكن حذفه. |
configtest | configtest|t [config-path] | يتحقق من إعدادات webpack. |
help | help|h [command] [option] | يعرض المساعدة للأوامر والخيارات. |
info | info|i [options] | يطبع معلومات عن نظامك. |
serve | serve|server|s [options] | يشغّل webpack-dev-server. |
version | version|v [commands...] | يطبع رقم إصدار webpack وwebpack-cli وwebpack-dev-server وحزم أخرى. |
watch | watch|w [entries...] [options] | يشغّل webpack ويراقب تغييرات الملفات. |
Build
يشغّل webpack، وهو الأمر الافتراضي ويمكن حذفه.
npx webpack build [options]مثال
npx webpack build --config ./webpack.config.js --stats verboseInit
يُستخدم لتهيئة مشروع webpack جديد باستخدام create-webpack-app.
npx create-webpack-app [generation-path] [options]مثال
npx create-webpack-app ./my-app --force --template=defaultاختصار لـ:
npx create-webpack-app init ./my-app --force --template=defaultGeneration Path
المكان الذي سيتم توليد الإعدادات فيه. القيمة الافتراضية هي process.cwd().
Options
-t, --template
string = 'default'
اسم القالب المراد توليده.
-f, --force
boolean
يولّد مشروعًا بدون أسئلة. عند تفعيله، سيتم استخدام الإجابة الافتراضية لكل سؤال.
القوالب المدعومة
--template=default- القالب الافتراضي مع إعدادات أساسية.--template=react- قالب بإعدادات React.--template=vue- قالب بإعدادات Vue.--template=svelte- قالب بإعدادات Svelte.
Loader
ينشئ هيكل loader.
npx create-webpack-app loader [output-path] [options]مثال
npx create-webpack-app loader ./my-loader --template=defaultOutput Path
المسار إلى مجلد output، مثل ./loader-name.
Options
-t, --template
string = 'default'
نوع القالب.
Plugin
ينشئ هيكل plugin.
npx create-webpack-app plugin [output-path] [options]مثال
npx create-webpack-app plugin ./my-plugin --template=defaultOutput Path
المسار إلى مجلد output، مثل ./plugin-name.
Options
-t, --template
string = 'default'
نوع القالب.
Info
يطبع معلومات عن نظامك.
npx webpack info [options]مثال
npx webpack info --output json --addition-package postcssخيارات info
-a, --additional-package
string
يضيف حزمًا إضافية إلى output.
مثال
npx webpack info --additional-package postcss-o, --output
string : 'json' | 'markdown'
للحصول على output بتنسيق محدد.
مثال
npx webpack info --output markdownConfigtest
يتحقق من إعدادات webpack.
npx webpack configtest [config-path]مثال
npx webpack configtest ./webpack.config.jsConfig Path
المسار إلى ملف إعدادات webpack. القيمة الافتراضية هي ./webpack.config.js.
Serve
يشغّل webpack dev server.
npx webpack serve [options]مثال
npx webpack serve --static --openWatch
يشغّل webpack ويراقب تغييرات الملفات.
npx webpack watch [options]مثال
npx webpack watch --mode developmentFlags
افتراضيًا، يأتي webpack مع flags التالية:
| Flag / Alias | النوع | الوصف |
|---|---|---|
--entry | string[] | entry point أو أكثر لتطبيقك، مثل ./src/main.js. |
--config, -c | string[] | يحدد مسار ملف إعدادات webpack، مثل ./webpack.config.js. |
--config-name | string[] | اسم الإعداد المراد استخدامه. |
--name | string | اسم الإعداد. يُستخدم عند تحميل عدة إعدادات. |
--color | boolean | يفعّل الألوان في console. |
--merge, -m | boolean | يدمج إعدادين أو أكثر باستخدام webpack-merge. |
--env | string[] | environment تُمرر إلى الإعداد عندما يكون دالة. |
--config-node-env | string | يضبط process.env.NODE_ENV على القيمة المحددة. |
--progress | boolean, string | يطبع تقدم compilation أثناء build. |
--help | boolean | يطبع قائمة flags والأوامر المدعومة. |
--output-path, -o | string | مكان إخراج الملف الذي يولده webpack، مثل ./dist. |
--target, -t | string[] | يحدد هدف build. |
--watch, -w | boolean | يراقب تغييرات الملفات. |
--watch-options-stdin | boolean | يوقف watch عند انتهاء stdin stream. |
--devtool, -d | string | يتحكم فيما إذا كانت source maps ستُولّد وكيف ستُولّد. |
--json, -j | boolean, string | يطبع النتيجة كـ JSON أو يحفظها في ملف. |
--mode | string | يحدد mode الذي سيُمرر إلى webpack. |
--version, -v | boolean | يعرض الإصدار الحالي. |
--stats | boolean, string | يوجه webpack لطريقة التعامل مع stats. |
--disable-interpret | boolean | يعطل interpret عند تحميل ملف الإعداد. |
--fail-on-warnings | boolean | يوقف webpack-cli بكود خروج غير صفري عند ظهور warnings من webpack. |
--analyze | boolean | يشغّل plugin باسم webpack-bundle-analyzer للحصول على معلومات bundle. |
--extends, -e | string[] | يمدد إعدادًا موجودًا. |
Negated Flags
| Flag | الوصف |
|---|---|
--no-color | يعطل أي ألوان في console. |
--no-hot | يعطل hot reloading إذا كان مفعّلًا من إعداداتك. |
--no-stats | يعطل أي compilation stats يصدرها webpack. |
--no-watch | لا يراقب تغييرات الملفات. |
--no-devtool | لا يولد source maps. |
--no-watch-options-stdin | لا يوقف watch عند انتهاء stdin stream. |
Core Flags
ابتداءً من CLI v4 وwebpack v5، تستورد CLI كامل configuration schema من webpack core، حتى تتيح ضبط معظم خيارات الإعداد تقريبًا من سطر الأوامر.
هذه قائمة بكل core flags المدعومة في webpack v5 مع CLI v4 - الرابط
مثلًا، إذا أردت تفعيل performance hints في مشروعك، يمكنك استخدام هذا الخيار في الإعدادات. ومع core flags يمكنك فعل ذلك بهذا الشكل:
npx webpack --performance-hints warningUsage
مع ملف إعدادات
npx webpack [--config webpack.config.js]راجع configuration لمعرفة الخيارات داخل ملف الإعدادات.
بدون ملف إعدادات
npx webpack --entry <entry> --output-path <output-path>مثال
npx webpack --entry ./first.js --entry ./second.js --output-path /buildentry
اسم ملف أو مجموعة أسماء ملفات تعمل كـ entry point لبناء مشروعك. يمكنك تمرير أكثر من entry، حيث يتم تحميل كل entry عند بدء التشغيل. توجد عدة طرق لتحديد ملف أو ملفات entry عبر CLI:
npx webpack --entry-reset ./first-entry.jsnpx webpack --entry-reset --entry ./first-entry.jsnpx webpack --entry-reset ./first-entry.js ./other-entry.jsnpx webpack --entry-reset --entry ./first-entry.js ./other-entry.jsoutput-path
مسار حفظ الملف المحزم. يتم ربطه بخيار الإعداد output.path.
مثال
إذا كانت بنية مشروعك كالتالي:
.
├── dist
├── index.html
└── src
├── index.js
├── index2.js
└── others.jsnpx webpack ./src/index.js --output-path distسيتم تحزيم كود المصدر باستخدام index.js كـ entry، وسيكون مسار ملف output bundle هو dist.
asset main.js 142 bytes [compared for emit] [minimized] (name: main)
./src/index.js 30 bytes [built] [code generated]
./src/others.js 1 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 187 msnpx webpack ./src/index.js ./src/others2.js --output-path dist/سيؤدي هذا إلى إنشاء bundle باستخدام الملفين كـ entry points منفصلة.
asset main.js 142 bytes [compared for emit] [minimized] (name: main)
./src/index.js 30 bytes [built] [code generated]
./src/others2.js 1 bytes [built] [code generated]
./src/others.js 1 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 198 msDefault Configurations
تبحث CLI عن بعض ملفات الإعدادات الافتراضية داخل مسار مشروعك. هذه هي ملفات الإعداد التي تلتقطها CLI.
ترتيب البحث يكون حسب الأولوية التالية:
مثال: سيكون ترتيب البحث عن ملف الإعداد هكذا webpack.config.js > .webpack/webpack.config.js > .webpack/webpackfile.js
'webpack.config',
'.webpack/webpack.config',
'.webpack/webpackfile',Common Options
help
عرض الأوامر والـ flags الأساسية المتاحة في cli
كل من webpack help [command] [option] وwebpack [command] --help صالح للحصول على المساعدة:
npx webpack --help
# أو
npx webpack helpعرض كل الأوامر والـ flags المدعومة من cli
npx webpack --help=verboseعرض المساعدة لأمر أو خيار محدد
npx webpack help --modeversion
يطبع رقم إصدار webpack وwebpack-cli وwebpack-dev-server وحزم أخرى
لفحص إصدار webpack وwebpack-cli الذي تستخدمه، شغّل:
npx webpack --version
# أو
npx webpack versionسيطبع نتيجة مثل:
webpack 5.31.2
webpack-cli 4.6.0وسيظهر إصدار webpack-dev-server أيضًا إذا كان مثبتًا لديك:
webpack 5.31.2
webpack-cli 4.6.0
webpack-dev-server 3.11.2config
يبني source باستخدام ملف إعدادات
حدد ملف configuration مختلفًا عن webpack.config.js، وهو أحد الملفات الافتراضية.
npx webpack --config example.config.jsconfig-name
إذا كان ملف الإعدادات يصدّر عدة إعدادات، يمكنك استخدام --config-name لتحديد الإعداد الذي تريد تشغيله.
تخيل ملف webpack.config.js التالي:
export default [
{
output: {
filename: "./dist-first.js",
},
name: "first",
entry: "./src/first.js",
mode: "development",
},
{
output: {
filename: "./dist-second.js",
},
name: "second",
entry: "./src/second.js",
mode: "development",
},
{
output: {
filename: "./dist-third.js",
},
name: "third",
entry: "./src/third.js",
mode: "none",
stats: "verbose",
},
];لتشغيل إعداد second فقط:
npx webpack --config-name secondيمكنك أيضًا تمرير عدة قيم:
npx webpack --config-name first --config-name secondmerge
يمكنك دمج إعدادين أو أكثر من إعدادات webpack باستخدام --merge:
npx webpack --config ./first.js --config ./second.js --mergeextends
webpack-cli v5.1.0+يمكنك تمديد إعدادات webpack موجودة باستخدام --extends:
npx webpack --extends ./base.webpack.config.jsاقرأ المزيد في تمديد الإعدادات.
json
يطبع نتيجة webpack كـ JSON
npx webpack --jsonإذا أردت حفظ stats كـ json بدل طباعتها، يمكنك استخدام:
npx webpack --json stats.jsonفي الحالات الأخرى، يطبع webpack مجموعة stats تعرض تفاصيل bundle وchunk والتوقيتات. باستخدام هذا الخيار، يمكن أن يكون output كائن JSON. تقبل هذه الاستجابة أداة analyse الخاصة بـ webpack، أو webpack-visualizer من chrisbateman، أو webpack-bundle-analyzer من th0r. تأخذ أداة analyse ملف JSON وتعرض كل تفاصيل build بشكل رسومي.
Environment Options
عندما تصدّر إعدادات webpack دالة، يمكن تمرير "environment" إليها.
env
npx webpack --env production # env.production = trueيقبل argument المسمى --env عدة قيم:
| الاستدعاء | environment الناتج |
|---|---|
npx webpack --env prod | { prod: true } |
npx webpack --env prod --env min | { prod: true, min: true } |
npx webpack --env platform=app --env production | { platform: "app", production: true } |
npx webpack --env foo=bar=app | { foo: "bar=app"} |
npx webpack --env app.platform="staging" --env app.name="test" | { app: { platform: "staging", name: "test" } |
إضافة إلى env المخصص الموضح أعلاه، توجد بعض القيم المدمجة تحت env لاستخدامها داخل إعدادات webpack:
| Environment Variable | الوصف |
|---|---|
WEBPACK_SERVE | true إذا كان serve|server|s مستخدمًا. |
WEBPACK_BUILD | true إذا كان build|bundle|b مستخدمًا. |
WEBPACK_WATCH | true إذا كان --watch|watch|w مستخدمًا. |
لاحظ أنك لا تستطيع الوصول إلى environment variables المدمجة هذه داخل الكود المحزم.
export default (env, argv) => ({
mode: env.WEBPACK_SERVE ? "development" : "production",
});config-node-env
webpack-cli v6.0.0+يضبط process.env.NODE_ENV داخل إعداداتك:
npx webpack --config-node-env production # process.env.NODE_ENV = 'production' in `webpack.config.js`عندما لا يكون خيار mode محددًا داخل الإعدادات، يمكنك استخدام خيار --config-node-env لضبط mode. مثلًا، استخدام --config-node-env production سيضبط كلًا من process.env.NODE_ENV وmode على 'production'.
إذا كانت إعداداتك تصدّر دالة، يتم تعيين قيمة --config-node-env إلى mode بعد أن ترجع الدالة. هذا يعني أن mode لن يكون متاحًا داخل arguments الخاصة بالدالة، أي env وargv. لكن قيمة --config-node-env يمكن الوصول إليها عبر argv.nodeEnv داخل الدالة واستخدامها حسب الحاجة.
export default (env, argv) => {
console.log(argv.defineProcessEnvNodeEnv); // 'production' إذا استُخدم --config-node-env production
return {
// إعداداتك
};
};Configuration Options
| Parameter | الشرح | نوع الإدخال | الافتراضي |
|---|---|---|---|
--config | مسار ملف الإعدادات | string[] | Default Configs |
--config-name | اسم الإعداد المراد استخدامه | string[] | - |
--env | environment تُمرر إلى الإعداد عندما يكون دالة | string[] | - |
Analyzing Bundle
يمكنك أيضًا استخدام webpack-bundle-analyzer لتحليل output bundles التي يصدرها webpack. يمكنك استخدام flag --analyze لتشغيله عبر CLI.
npx webpack --analyzeProgress
لفحص تقدم أي webpack compilation، يمكنك استخدام flag --progress.
npx webpack --progressلجمع profile data الخاصة بخطوات التقدم، يمكنك تمرير القيمة profile إلى flag --progress.
npx webpack --progress=profileتمرير CLI arguments إلى Node.js
لتمرير arguments مباشرة إلى عملية Node.js، يمكنك استخدام خيار NODE_OPTIONS.
مثلًا، لزيادة حد ذاكرة عملية Node.js إلى 4 GB:
NODE_OPTIONS="--max-old-space-size=4096" webpackويمكنك أيضًا تمرير عدة خيارات إلى عملية Node.js:
NODE_OPTIONS="--max-old-space-size=4096 -r /path/to/preload/file.js" webpackأكواد الخروج ومعانيها
| Exit Code | الوصف |
|---|---|
0 | نجاح |
1 | أخطاء من webpack |
2 | مشكلة في الإعدادات/الخيارات أو خطأ داخلي |
CLI Environment Variables
| Environment Variable | الوصف |
|---|---|
WEBPACK_CLI_SKIP_IMPORT_LOCAL | عندما تكون true، سيتم تجاوز استخدام النسخة المحلية من webpack-cli. |
WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG | عندما تكون true، سيتم إجبار تحميل إعداد ESM. |
WEBPACK_PACKAGE | يستخدم إصدارًا مخصصًا من webpack داخل CLI. |
WEBPACK_DEV_SERVER_PACKAGE | يستخدم إصدارًا مخصصًا من webpack-dev-server داخل CLI. |
WEBPACK_CLI_HELP_WIDTH | يستخدم عرضًا مخصصًا لناتج help. |
WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG=true npx webpack --config ./webpack.config.esmWEBPACK_PACKAGE
يستخدم إصدارًا مخصصًا من webpack داخل CLI. بافتراض وجود المحتوى التالي في package.json:
{
"webpack": "^4.0.0",
"webpack-5": "npm:webpack@^5.32.0",
"webpack-cli": "^4.5.0"
}لاستخدام webpack v4.0.0:
npx webpackلاستخدام webpack v5.32.0:
WEBPACK_PACKAGE=webpack-5 npx webpackTroubleshooting
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for ./webpack.config.ts
قد تواجه هذا الخطأ عند استخدام ESM الأصلي في TypeScript، أي وجود type: "module" داخل package.json.
يدعم webpack-cli الإعدادات بصيغتي CommonJS وESM. في البداية يحاول تحميل الإعداد باستخدام import()، وإذا فشل يحاول تحميله باستخدام require().
لكن طريقة import() لن تعمل مع ts-node بدون تفعيل loader hooks، كما هو موضح في TypeStrong/ts-node#1007.
لإصلاح الخطأ السابق، استخدم الأمر التالي:
NODE_OPTIONS="--import=data:text/javascript,import { register } from 'node:module'; import { pathToFileURL } from 'node:url'; register('ts-node/esm', pathToFileURL('./'));" npx webpack --entry ./src/index.js --mode productionلمزيد من المعلومات، راجع توثيقنا عن كتابة إعدادات webpack باستخدام TypeScript.



