Skip to content

Commit 8e97331

Browse files
committed
feat: collect assets from modules
1 parent dd141f2 commit 8e97331

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/index.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,21 @@ class MiniCssExtractPlugin {
138138
compilation.hooks.normalModuleLoader.tap(pluginName, (lc, m) => {
139139
const loaderContext = lc;
140140
const module = m;
141-
loaderContext[MODULE_TYPE] = (content) => {
141+
loaderContext[MODULE_TYPE] = (content, assets) => {
142142
if (!Array.isArray(content) && content != null) {
143143
throw new Error(
144144
`Exported value was not extracted as an array: ${JSON.stringify(
145145
content
146146
)}`
147147
);
148148
}
149+
150+
module.buildInfo = module.buildInfo || { assets: {} };
151+
module.buildInfo.assets = {
152+
...module.buildInfo.assets,
153+
...assets,
154+
};
155+
149156
const identifierCountMap = new Map();
150157
for (const line of content) {
151158
const count = identifierCountMap.get(line.identifier) || 0;

src/loader.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,19 @@ export function pitch(request) {
7676
);
7777

7878
let source;
79+
let assets = {};
7980
childCompiler.hooks.afterCompile.tap(pluginName, (compilation) => {
8081
source =
8182
compilation.assets[childFilename] &&
8283
compilation.assets[childFilename].source();
8384

85+
// Collect assets from modules
86+
compilation.modules.forEach((module) => {
87+
if (module.buildInfo && module.buildInfo.assets) {
88+
assets = { ...assets, ...module.buildInfo.assets };
89+
}
90+
});
91+
8492
// Remove all chunk assets
8593
compilation.chunks.forEach((chunk) => {
8694
chunk.files.forEach((file) => {
@@ -123,7 +131,7 @@ export function pitch(request) {
123131
};
124132
});
125133
}
126-
this[MODULE_TYPE](text);
134+
this[MODULE_TYPE](text, assets);
127135
} catch (e) {
128136
return callback(e);
129137
}

0 commit comments

Comments
 (0)