Skip to content

Commit 1c28304

Browse files
committed
feat: collect assets from modules
1 parent 98b4d0e commit 1c28304

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/index.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,21 @@ class MiniCssExtractPlugin {
133133
compilation.hooks.normalModuleLoader.tap(pluginName, (lc, m) => {
134134
const loaderContext = lc;
135135
const module = m;
136-
loaderContext[NS] = (content) => {
136+
loaderContext[NS] = (content, assets) => {
137137
if (!Array.isArray(content) && content != null) {
138138
throw new Error(
139139
`Exported value was not extracted as an array: ${JSON.stringify(
140140
content
141141
)}`
142142
);
143143
}
144+
145+
module.buildInfo = module.buildInfo || { assets: {} };
146+
module.buildInfo.assets = {
147+
...module.buildInfo.assets,
148+
...assets,
149+
};
150+
144151
const identifierCountMap = new Map();
145152
for (const line of content) {
146153
const count = identifierCountMap.get(line.identifier) || 0;

src/loader.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,19 @@ export function pitch(request) {
7878
);
7979

8080
let source;
81+
let assets = {};
8182
childCompiler.hooks.afterCompile.tap(pluginName, (compilation) => {
8283
source =
8384
compilation.assets[childFilename] &&
8485
compilation.assets[childFilename].source();
8586

87+
// Collect assets from modules
88+
compilation.modules.forEach((module) => {
89+
if (module.buildInfo && module.buildInfo.assets) {
90+
assets = { ...assets, ...module.buildInfo.assets };
91+
}
92+
});
93+
8694
// Remove all chunk assets
8795
compilation.chunks.forEach((chunk) => {
8896
chunk.files.forEach((file) => {
@@ -125,7 +133,7 @@ export function pitch(request) {
125133
};
126134
});
127135
}
128-
this[NS](text);
136+
this[NS](text, assets);
129137
} catch (e) {
130138
return callback(e);
131139
}

0 commit comments

Comments
 (0)