add resolve dependencies to compilation

This commit is contained in:
Tobias Koppers 2020-02-28 17:29:24 +01:00
parent ddd3745942
commit a2601eb5c8
1 changed files with 24 additions and 6 deletions

View File

@ -7,16 +7,18 @@
const ModuleNotFoundError = require("../ModuleNotFoundError");
const RuntimeGlobals = require("../RuntimeGlobals");
const {
toConstantDependency,
evaluateToString
} = require("../javascript/JavascriptParserHelpers");
const LazySet = require("../util/LazySet");
const OverridableModule = require("./OverridableModule");
const OverridableOriginalDependency = require("./OverridableOriginalDependency");
const OverridableOriginalModuleFactory = require("./OverridableOriginalModuleFactory");
const OverridablesRuntimeModule = require("./OverridablesRuntimeModule");
const parseOptions = require("./parseOptions");
const {
toConstantDependency,
evaluateToString
} = require("../javascript/JavascriptParserHelpers");
/** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
/** @typedef {import("../Compiler")} Compiler */
class OverridablesPlugin {
@ -37,6 +39,14 @@ class OverridablesPlugin {
);
const resolvedOverridables = new Map();
const resolveContext = {
/** @type {LazySet<string>} */
fileDependencies: new LazySet(),
/** @type {LazySet<string>} */
contextDependencies: new LazySet(),
/** @type {LazySet<string>} */
missingDependencies: new LazySet()
};
const promise = Promise.all(
this.overridables.map(([key, request]) => {
const resolver = compilation.resolverFactory.get("normal");
@ -45,7 +55,7 @@ class OverridablesPlugin {
{},
compiler.context,
request,
{},
resolveContext,
(err, result) => {
if (err) {
compilation.errors.push(
@ -61,7 +71,15 @@ class OverridablesPlugin {
);
});
})
);
).then(() => {
compilation.contextDependencies.addAll(
resolveContext.contextDependencies
);
compilation.fileDependencies.addAll(resolveContext.fileDependencies);
compilation.missingDependencies.addAll(
resolveContext.missingDependencies
);
});
normalModuleFactory.hooks.afterResolve.tapAsync(
"OverridablesPlugin",
(resolveData, callback) => {