Node
تُحدِّد خيارات Node.js الآتية ما إذا كان webpack سيُوفِّر polyfill أو مُحاكاة (mock) لبعض المتغيّرات العالميّة في Node.js.
هذه الميزة يُوفّرها plugin داخلي في webpack هو NodeStuffPlugin.
node
false object
webpack.config.js
export default {
// ...
node: {
global: false,
__filename: false,
__dirname: false,
},
};يمكنك ضبط الخيار node على false لتُعطّل plugin الـ NodeStuffPlugin تماماً.
node.global
boolean 'warn'
اطّلع على توثيق Node.js لمعرفة السلوك التفصيلي لهذا الكائن.
الخيارات:
true: يُوفِّر polyfill أو يستعملglobalThisإن كانت بيئتك تدعمها، انظر الخيارenvironment.false: لا يُوفِّر شيئاً. وقد تنهار الشيفرة التي تنتظر وجود هذا الكائن مُطلقةًReferenceError.'warn': يُظهر تحذيراً عند استخدامglobal.
node.__filename
boolean 'mock' | 'warn-mock' | 'node-module' | 'eval-only'
الخيارات:
true: اسم ملفّ الإدخال (input) نسبةً إلى خيارcontext.false: لن يمسّ webpack شيفرتك التي تستعمل__filenameوimport.meta.filename، أي ستحظى بالسلوك الاعتيادي لـ Node.js لهذين المتغيّرين. ويكون الاسم اسمَ ملفّ الإخراج (output) حين تُنفَّذ الشيفرة في بيئة Node.js.'mock': قيمة ثابتة'/index.js'.'warn-mock': يستعمل القيمة الثابتة'/index.js'لكن مع إظهار تحذير.'node-module': يستبدل__filenameفي وحدات CommonJS، وimport.meta.filenameفي وحدات ES، بـfileURLToPath(import.meta.url)حين يكونoutput.moduleمفعَّلاً.'eval-only': يُؤجِّل تحليل__filename/import.meta.filenameإلى وقت التنفيذ ضمن Node.js، لكنه يُقيّمها أثناء البناء كما يفعل معrequire/importمن أجل تحليل الوحدات تحليلاً صحيحاً. كما يستبدل__filenameبـimport.meta.filenameوالعكس بحسب الخيارoutput.module(وإن لم تكن بيئتك تدعمimport.meta.filename، فسيُستعمَل البديل عبرimport.meta.urlللحصول على هذه القيمة).
قد تتأثّر القيمة الافتراضية باختلاف target:
- تكون افتراضياً
'eval-only'إن كانtargetمضبوطاً على'node'أو على بيئات شبيهة بـ node (مثلasync-nodeوelectron) أو على أهداف مختلطة (مثلwebوnodeمعاً). - وتكون افتراضياً
'mock'إن كانtargetمضبوطاً على'web'أو على بيئات شبيهة بالويب.
node.__dirname
boolean 'mock' | 'warn-mock' | 'node-module' | 'eval-only'
الخيارات:
true: اسم مجلَّد ملفّ الإدخال (input) نسبةً إلى خيارcontext.false: لن يمسّ webpack شيفرتك التي تستعمل__dirnameوimport.meta.dirname، أي ستحظى بالسلوك الاعتيادي لـ Node.js لهذين المتغيّرين. ويكون الاسم اسمَ مجلَّد ملفّ الإخراج (output) حين تُنفَّذ الشيفرة في بيئة Node.js.'mock': قيمة ثابتة'/'.'warn-mock': يستعمل القيمة الثابتة'/'لكن مع إظهار تحذير.'node-module': يستبدل__dirnameفي وحدات CommonJS بـfileURLToPath(import.meta.url + "/..")حين يكونoutput.moduleمفعَّلاً.'eval-only': يُؤجِّل تحليل__dirname/import.meta.dirnameإلى وقت التنفيذ ضمن Node.js، لكنه يُقيّمها أثناء البناء كما يفعل معrequire/importمن أجل تحليل الوحدات تحليلاً صحيحاً. كما يستبدل__dirnameبـimport.meta.dirnameوالعكس بحسب الخيارoutput.module(وإن لم تكن بيئتك تدعمimport.meta.filename، فسيُستعمَل البديل عبرimport.meta.urlللحصول على هذه القيمة).
قد تتأثّر القيمة الافتراضية باختلاف target:



