require CriticalDependencyWarning lazily in ContextDependency

This commit is contained in:
Tobias Koppers 2020-07-06 17:07:51 +02:00
parent 7b2a267155
commit 001090fade
1 changed files with 7 additions and 1 deletions

View File

@ -8,12 +8,16 @@
const Dependency = require("../Dependency");
const DependencyTemplate = require("../DependencyTemplate");
const makeSerializable = require("../util/makeSerializable");
const CriticalDependencyWarning = require("./CriticalDependencyWarning");
const memorize = require("../util/memorize");
/** @typedef {import("../ContextModule").ContextOptions} ContextOptions */
/** @typedef {import("../ModuleGraph")} ModuleGraph */
/** @typedef {import("../WebpackError")} WebpackError */
const getCriticalDependencyWarning = memorize(() =>
require("./CriticalDependencyWarning")
);
/** @typedef {ContextOptions & { request: string }} ContextDependencyOptions */
const regExpToString = r => (r ? r + "" : "");
@ -74,11 +78,13 @@ class ContextDependency extends Dependency {
if (this.critical) {
if (!warnings) warnings = [];
const CriticalDependencyWarning = getCriticalDependencyWarning();
warnings.push(new CriticalDependencyWarning(this.critical));
}
if (this.hadGlobalOrStickyRegExp) {
if (!warnings) warnings = [];
const CriticalDependencyWarning = getCriticalDependencyWarning();
warnings.push(
new CriticalDependencyWarning(
"Contexts can't use RegExps with the 'g' or 'y' flags."