diff --git a/src/index.js b/src/index.js index 4f584441..488f8960 100644 --- a/src/index.js +++ b/src/index.js @@ -138,7 +138,7 @@ class MiniCssExtractPlugin { compilation.hooks.normalModuleLoader.tap(pluginName, (lc, m) => { const loaderContext = lc; const module = m; - loaderContext[MODULE_TYPE] = (content) => { + loaderContext[MODULE_TYPE] = (content, assets) => { if (!Array.isArray(content) && content != null) { throw new Error( `Exported value was not extracted as an array: ${JSON.stringify( @@ -146,6 +146,13 @@ class MiniCssExtractPlugin { )}` ); } + + module.buildInfo = module.buildInfo || { assets: {} }; + module.buildInfo.assets = { + ...module.buildInfo.assets, + ...assets, + }; + const identifierCountMap = new Map(); for (const line of content) { const count = identifierCountMap.get(line.identifier) || 0; diff --git a/src/loader.js b/src/loader.js index cd8fefbc..70f37503 100644 --- a/src/loader.js +++ b/src/loader.js @@ -76,11 +76,19 @@ export function pitch(request) { ); let source; + let assets = {}; childCompiler.hooks.afterCompile.tap(pluginName, (compilation) => { source = compilation.assets[childFilename] && compilation.assets[childFilename].source(); + // Collect assets from modules + compilation.modules.forEach((module) => { + if (module.buildInfo && module.buildInfo.assets) { + assets = { ...assets, ...module.buildInfo.assets }; + } + }); + // Remove all chunk assets compilation.chunks.forEach((chunk) => { chunk.files.forEach((file) => { @@ -123,7 +131,7 @@ export function pitch(request) { }; }); } - this[MODULE_TYPE](text); + this[MODULE_TYPE](text, assets); } catch (e) { return callback(e); }