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