Skip to content

Commit e474734

Browse files
committed
Fix mini-css-extract-plugin 0.4.3 issue
Second attempt. Based on webdeveric/webpack-assets-manifest#40 Resolves shellscape#167 mini-css-extract-plugin reports additional, incorrect information for files that are refenced in CSS. The first time we see the file the `module.userRequest` is correct, and we add to `moduleAssets` correctly. However mini-css-extract-plugin then also reports the same `file` but with `module.userRequest` set to the CSS file that references it, which caused us to overwrite the good value in `moduleAssets`. See the change in mini-css-extract-plugin that caused this webpack-contrib/mini-css-extract-plugin#177
1 parent de5f138 commit e474734

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

lib/plugin.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,29 @@ ManifestPlugin.prototype.apply = function(compiler) {
4040
var outputName = path.relative(outputFolder, outputFile);
4141

4242
var moduleAsset = function (module, file) {
43-
if (module.userRequest && !moduleAssets[file]) {
43+
if (module.userRequest) {
4444
moduleAssets[file] = path.join(
4545
path.dirname(file),
4646
path.basename(module.userRequest)
4747
);
4848
}
4949
};
5050

51+
var normalModuleLoader = function (loaderContext, module) {
52+
const { emitFile } = loaderContext;
53+
54+
loaderContext.emitFile = (file, content, sourceMap) => {
55+
if (module.userRequest && !moduleAssets[file]) {
56+
moduleAssets[file] = path.join(
57+
path.dirname(file),
58+
path.basename(module.userRequest)
59+
);
60+
}
61+
62+
return emitFile.call(module, file, content, sourceMap);
63+
};
64+
};
65+
5166
var emit = function(compilation, compileCallback) {
5267
const emitCount = emitCountMap.get(outputFile) - 1
5368
emitCountMap.set(outputFile, emitCount);
@@ -212,7 +227,7 @@ ManifestPlugin.prototype.apply = function(compiler) {
212227
compiler.hooks.webpackManifestPluginAfterEmit = new SyncWaterfallHook(['manifest']);
213228

214229
compiler.hooks.compilation.tap(pluginOptions, function (compilation) {
215-
compilation.hooks.moduleAsset.tap(pluginOptions, moduleAsset);
230+
compilation.hooks.normalModuleLoader.tap(pluginOptions, normalModuleLoader);
216231
});
217232
compiler.hooks.emit.tap(pluginOptions, emit);
218233

0 commit comments

Comments
 (0)