IgnorePlugin

يمنع IgnorePlugin إنشاء modules لاستدعاءات import أو require التي تطابق regular expressions أو دوال التصفية التي تحددها.

استخدام regular expressions

  • resourceRegExp: RegExp لاختبار المورد المطلوب.
  • contextRegExp: خيار اختياري. RegExp لاختبار السياق، أي المجلد الذي يأتي منه الطلب.
new webpack.IgnorePlugin({ resourceRegExp, contextRegExp });

استخدام دوال التصفية

  • checkResource (resource, context): دالة تصفية تستقبل resource وcontext كمعاملين، ويجب أن ترجع قيمة boolean.
new webpack.IgnorePlugin({
  checkResource(resource) {
    // do something with resource
    return true | false;
  },
});

مثال: تجاهل ملفات locales في Moment

ابتداءً من moment 2.18، تُحزّم كل locales مع المكتبة الأساسية (راجع هذه المشكلة في GitHub).

المعامل resourceRegExp الذي تمرره إلى IgnorePlugin لا يُختبر على أسماء الملفات بعد حلها، ولا على أسماء modules المطلقة التي يتم استيرادها. بدلًا من ذلك، يُختبر على النص نفسه الذي يمرر إلى require أو import داخل الكود المصدر الذي يحدث فيه الاستيراد. لذلك، إذا كنت تحاول استبعاد node_modules/moment/locale/*.js، فلن يعمل هذا المثال:

-new webpack.IgnorePlugin({ resourceRegExp: /moment\/locale\// });

والسبب أن moment يستورد الملفات بهذا الشكل:

import(`./locale/${name}`);

// or

require(`./locale/${name}`);

لذلك يجب أن يطابق أول regexp النص './locale/'. بعد ذلك يُستخدم المعامل الثاني contextRegExp لتحديد المجلدات التي حدث منها الاستيراد. المثال التالي يجعل webpack يتجاهل ملفات locale هذه:

new webpack.IgnorePlugin({
  resourceRegExp: /^\.\/locale$/,
  contextRegExp: /moment$/,
});

وهذا يعني: أي استدعاء require يطابق './locale' ويأتي من مجلد ينتهي بـ 'moment' سيتم تجاهله.

Edit this page·

1 Contributor

RlxChap2