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:

  • تكون افتراضياً 'eval-only' إن كان target مضبوطاً على 'node' أو على بيئات شبيهة بـ node (مثل async-node وelectron) أو على أهداف مختلطة (مثل web وnode معاً).
  • وتكون افتراضياً 'mock' إن كان target مضبوطاً على 'web' أو على بيئات شبيهة بالويب.
Edit this page·
« Previous
Dotenv
Next »
Stats

1 Contributor

RlxChap2