Resolvers

تُنشأ resolvers باستخدام حزمة enhanced-resolve. ترث class Resolver من tapable وتستخدمها لتوفير بعض hooks. يمكنك استخدام enhanced-resolve مباشرة لإنشاء resolvers جديدة، لكن كل compiler instance يحتوي أصلًا على عدة resolver instances يمكنك استخدام hooks الخاصة بها.

قبل المتابعة، من الأفضل مراجعة توثيق enhanced-resolve وتوثيق tapable.

الأنواع

توجد ثلاثة أنواع مدمجة من resolvers داخل class compiler:

  • normal: يحل module باستخدام مسار مطلق أو نسبي.
  • context: يحل module داخل سياق محدد.
  • loader: يحل webpack loader.

حسب حاجتك، يمكنك تخصيص أي resolver مدمج يستخدمه compiler عن طريق plugins:

compiler.resolverFactory.hooks.resolver
  .for("normal")
  .tap("MyResolverPlugin", (resolver) => {
    resolver.hooks.result.tap("MyResolverPlugin", (result) => result);
  });

حيث تكون [type] واحدًا من resolvers الثلاثة المذكورة أعلاه.

راجع توثيق enhanced-resolve للاطلاع على القائمة الكاملة للـ hooks وشرح كل واحد منها.

خيارات الإعداد

يمكن أيضًا تخصيص resolvers المذكورة أعلاه من ملف الإعدادات باستخدام خياري resolve أو resolveLoader. تسمح هذه الخيارات بتغيير طريقة حل المسارات بعدة طرق، ومنها استخدام plugins داخل resolve.

يمكن وضع resolver plugins، مثل DirectoryNamedPlugin، مباشرة داخل resolve.plugins بدل استخدامها في خيار الإعداد plugins.

·تعديل هذه الصفحة
السابق ›
Plugin API

1 مساهم

RlxChap2