NormalModuleFactory Hooks

يستخدم Compiler الوحدة NormalModuleFactory لإنشاء modules. تبدأ العملية من entry points، ثم يحل webpack كل request، ويحلل المحتوى للعثور على requests إضافية، ويستمر في التنقل بين الملفات عبر حل كل request وتحليل أي ملف جديد. في المرحلة الأخيرة، تتحول كل dependency إلى instance من Module.

ترث class NormalModuleFactory من Tapable وتوفّر lifecycle hooks التالية. يمكنك استخدام tap معها بالطريقة نفسها المستخدمة مع compiler hooks:

const nmf = NormalModuleFactory.hooks;
nmf.someHook.tap("MyPlugin", (resolveData) => {
  // ...
});

ينشئ NormalModuleFactory instances من Parser وGenerator، ويمكن الوصول إليها عبر HookMaps. يجب تمرير identifier لاستخدام tap معها:

NormalModuleFactory.hooks.parser
  .for("javascript/esm")
  .tap("MyPlugin", (parser, parserOptions) => {
    // ...
  });

كما هو الحال مع compiler، قد يتوفر tapAsync وtapPromise أيضًا حسب نوع hook.

beforeResolve

AsyncSeriesBailHook

يُستدعى عند ظهور dependency request جديد. يمكن تجاهل dependency بإرجاع false. وإلا، أرجع undefined حتى تستمر العملية.

  • معاملات callback: resolveData

factorize

AsyncSeriesBailHook

يُستدعى قبل بدء resolve. يجب إرجاع undefined حتى تستمر العملية.

  • معاملات callback: resolveData

resolve

AsyncSeriesBailHook

يُستدعى قبل حل request. يمكن تجاهل dependency بإرجاع false. كما أن إرجاع instance من Module ينهي العملية. وإلا، أرجع undefined حتى تستمر العملية.

  • معاملات callback: resolveData

resolveForScheme

AsyncSeriesBailHook

يُستدعى قبل حل request يحتوي scheme، مثل URI.

  • معاملات callback: resolveData

afterResolve

AsyncSeriesBailHook

يُستدعى بعد حل request.

  • معاملات callback: resolveData

createModule

AsyncSeriesBailHook

يُستدعى قبل إنشاء instance من NormalModule.

  • معاملات callback: createData resolveData

createModuleClass

HookMap<SyncBailHook>

5.81.0+

يسمح لك هذا hook باستبدال class NormalModule عند إنشاء modules. يُستدعى هذا hook بعد createModule وقبل module.

  • معاملات hook: identifier

  • معاملات callback: createData resolveData

module

SyncWaterfallHook

يُستدعى بعد إنشاء instance من NormalModule.

  • معاملات callback: module createData resolveData

createParser

HookMap<SyncBailHook>

يُستدعى قبل إنشاء instance من Parser. تمثل parserOptions الخيارات الموجودة في module.parser للـ identifier المطابق، أو تكون object فارغًا.

  • معاملات hook: identifier

  • معاملات callback: parserOptions

parser

HookMap<SyncHook>

يُستدعى بعد إنشاء instance من Parser.

  • معاملات hook: identifier

  • معاملات callback: parser parserOptions

القيم الافتراضية الممكنة للـ identifiers:

  1. javascript/auto
  2. javascript/dynamic
  3. javascript/esm
  4. json
  5. webassembly/sync
  6. webassembly/async
  7. asset

createGenerator

HookMap<SyncBailHook>

يُستدعى قبل إنشاء instance من Generator. تمثل generatorOptions الخيارات الموجودة في module.generator للـ identifier المطابق، أو تكون object فارغًا.

  • معاملات hook: identifier

  • معاملات callback: generatorOptions

generator

HookMap<SyncHook>

يُستدعى بعد إنشاء instance من Generator.

  • معاملات hook: identifier

  • معاملات callback: generator generatorOptions

القيم الافتراضية الممكنة للـ identifiers:

  1. json
  2. webassembly/sync
  3. webassembly/async
  4. asset
  5. asset/source
  6. asset/resource
  7. asset/inline
  8. asset/bytes
Edit this page·

1 Contributor

RlxChap2