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:
createDataresolveData
createModuleClass
HookMap<SyncBailHook>
يسمح لك هذا hook باستبدال class NormalModule عند إنشاء modules. يُستدعى هذا hook بعد createModule وقبل module.
-
معاملات hook:
identifier -
معاملات callback:
createDataresolveData
module
SyncWaterfallHook
يُستدعى بعد إنشاء instance من NormalModule.
- معاملات callback:
modulecreateDataresolveData
createParser
HookMap<SyncBailHook>
يُستدعى قبل إنشاء instance من Parser. تمثل parserOptions الخيارات الموجودة في module.parser للـ identifier المطابق، أو تكون object فارغًا.
-
معاملات hook:
identifier -
معاملات callback:
parserOptions
parser
HookMap<SyncHook>
يُستدعى بعد إنشاء instance من Parser.
-
معاملات hook:
identifier -
معاملات callback:
parserparserOptions
القيم الافتراضية الممكنة للـ identifiers:
javascript/autojavascript/dynamicjavascript/esmjsonwebassembly/syncwebassembly/asyncasset
createGenerator
HookMap<SyncBailHook>
يُستدعى قبل إنشاء instance من Generator. تمثل generatorOptions الخيارات الموجودة في module.generator للـ identifier المطابق، أو تكون object فارغًا.
-
معاملات hook:
identifier -
معاملات callback:
generatorOptions
generator
HookMap<SyncHook>
يُستدعى بعد إنشاء instance من Generator.
-
معاملات hook:
identifier -
معاملات callback:
generatorgeneratorOptions
القيم الافتراضية الممكنة للـ identifiers:
jsonwebassembly/syncwebassembly/asyncassetasset/sourceasset/resourceasset/inlineasset/bytes



