-
-
Notifications
You must be signed in to change notification settings - Fork 184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incompatibility with the latest version of mini-css-extract-plugin (0.4.3) #167
Comments
I've just come across this issue. It appears to be caused because the The solution in A similar, but simpler change works here if we add to the |
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
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
- Replace ExtractTextPlugin with MiniCssExtractPlugin, but pin to 0.4.2 until shellscape/webpack-manifest-plugin#167 is resolved - Remove the style loader as it is no longer needed - Replace removed CommonsChunkPlugin with `optimize.splitChunks` configuration option - Remove plugins provided by `mode` configuration option: NamedChunksPlugin, NamedModulesPlugin, and DefinePlugin
- Replace ExtractTextPlugin with MiniCssExtractPlugin, but pin to 0.4.2 until shellscape/webpack-manifest-plugin#167 is resolved - Remove the style loader as it is no longer needed - Replace removed CommonsChunkPlugin with `optimize.splitChunks` configuration option - Remove plugins provided by `mode` configuration option: NamedChunksPlugin, NamedModulesPlugin, and DefinePlugin
- Replace ExtractTextPlugin with MiniCssExtractPlugin, but pin to 0.4.2 until shellscape/webpack-manifest-plugin#167 is resolved - Remove the style loader as it is no longer needed - Replace removed CommonsChunkPlugin with `optimize.splitChunks` configuration option - Remove plugins provided by `mode` configuration option: NamedChunksPlugin, NamedModulesPlugin, and DefinePlugin
- Temporarily add local, upgraded `@dojo/webpack-contrib` - Temporarily update package.json for CI - Replace ExtractTextPlugin with MiniCssExtractPlugin, but pin to 0.4.2 until shellscape/webpack-manifest-plugin#167 is resolved - Replace removed CommonsChunkPlugin with `optimize.splitChunks` configuration option - Remove plugins provided by `mode` configuration option: NamedChunksPlugin, NamedModulesPlugin, and DefinePlugin - Use terser-webpack-plugin over uglifyjs-webpack-plugin-terser - Upgrade to [email protected] - Add runtime chunk, disable default chunk, and force modules into main chunk - Filter css order warnings - Move optimize-css-assets-webpack-plugin to dist config - Update tapable typings
- Update webpack-contrib to next - Replace ExtractTextPlugin with MiniCssExtractPlugin, but pin to 0.4.2 until shellscape/webpack-manifest-plugin#167 is resolved - Replace removed CommonsChunkPlugin with `optimize.splitChunks` configuration option - Remove plugins provided by `mode` configuration option: NamedChunksPlugin, NamedModulesPlugin, and DefinePlugin - Use terser-webpack-plugin over uglifyjs-webpack-plugin-terser - Upgrade to [email protected] - Add runtime chunk, disable default chunk, and force modules into main chunk - Filter css order warnings - Move optimize-css-assets-webpack-plugin to dist config - Update tapable typings
- Update webpack-contrib to next - Replace ExtractTextPlugin with MiniCssExtractPlugin, but pin to 0.4.2 until shellscape/webpack-manifest-plugin#167 is resolved. - Replace removed CommonsChunkPlugin with `optimize.splitChunks` configuration option - Remove plugins provided by `mode` configuration option: NamedChunksPlugin, NamedModulesPlugin, and DefinePlugin - Use terser-webpack-plugin over uglifyjs-webpack-plugin-terser - Upgrade to [email protected] - Force CSS splitting by entry - Filter css order warnings - Add optimize-css-assets-webpack-plugin to dist config - Update tapable typings
The current workaround for this is to force the dependency to 0.4.2 through yarn resolutions. |
- Update webpack-contrib to next - Replace ExtractTextPlugin with MiniCssExtractPlugin, but pin to 0.4.2 until shellscape/webpack-manifest-plugin#167 is resolved. - Replace removed CommonsChunkPlugin with `optimize.splitChunks` configuration option - Remove plugins provided by `mode` configuration option: NamedChunksPlugin, NamedModulesPlugin, and DefinePlugin - Use terser-webpack-plugin over uglifyjs-webpack-plugin-terser - Upgrade to [email protected] - Force CSS splitting by entry - Filter css order warnings - Add optimize-css-assets-webpack-plugin to dist config - Update tapable typings
This did not help in my case :( |
me too |
I mean in package.json have a resolutions key (this only works with yarn, not supported by npm)
for npm I guess you can force the version and that's it
|
Thanks @fernandopasik, reverting to |
Are there any plans for webpack-manifest-plugin to have a permanent fix? |
I'm having this issue with |
I can confirm this issue. it also happens with PostCSS and ExtractCssPlugin, where (for example) fonts end up as a single entry like this:
Both the key and value make no sense. |
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 fixes #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 fixes #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 fixes #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 fixes #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 fixes #167
#176 is available on |
I was running into this issue and can confirm that |
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
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
Unfortunately, the issue still occurs with the current {
"main.css": "style.b248c6e8f370b3bc8646.css", // <--- key should be "style.css"
"main.js": "main.3cf1156c43d58afb8952.js"
} @shellscape Thanks in advance to your attention; I can create a separate issue if need be. |
v3.0.0 is published and should resolve this issue. |
This PR was squashed before being merged into the main branch. Discussion ---------- Update Webpack to v5 (+ other dependencies) Last week Webpack added a compat layer to its v5 alpha that allows the `mini-css-extract-plugin` to run on it (with deprecated messages). Since we include that plugin by default (and a lot of our tests relie on it) it was the main thing blocking us from preparing the migration. --- I basically started from #564 which was updating some dependencies, enabling CSS HMR when needed and adding a `configureMiniCssExtractPlugin(...)` method, but with a few changes: * no more inconsistent hashes checks for the `enableVersioning applies to js, css & manifest` test: it seems to be working fine by default * no more embedding the `webpack-manifest-plugin` into our code: shellscape/webpack-manifest-plugin#167 is still an issue but @mastilver has been working on the project lately (which is why the plugin works with Webpack 5) and a fix has already been merged on the `next` branch, so it's probably only a matter of time now :). **Edit: Fixed in `webpack-manifest-plugin@^3.0.0-rc`** * removal of Node 8 compatibility So now, about the state of that PR: **0 failing test left**: * ~6 tests that will probably be fixed by webpack/webpack#10661 in `[email protected]`: `Uncaught Error: Error when running the browser: Error: Error when running the browser: ReferenceError: mod is not defined`~ * ~All the 7 tests related to the `vue-loader` are failing with a `Cannot find module 'webpack/lib/RuleSet` error message (see: vuejs/vue-loader#1599 * ~1 test related to the `webpack-manifest-plugin` issue previously mentioned~ * ~1 test related to `createSharedEntry()` which doesn't seem to work properly~ * ~1 test related to Babel that doesn't transform an arrow function as expected~ **A lot of deprecation notices** (but most, if not all, of them are triggered by vendors), for instance: * `Compilation.hooks.normalModuleLoader was moved to NormalModule.getCompilationHooks(compilation).loader` * `Module.id: Use new ChunkGraph API` * `Module.updateHash: Use new ChunkGraph API` * `Chunk.modulesIterable: Use new ChunkGraph API` * `ChunkGroup.getModuleIndex2 was renamed to getModulePostOrderIndex` * `Compilation.chunks was changed from Array to Set (using Array method 'reduce' is deprecated)` * `chunk.files was changed from Array to Set (using Array method 'reduce' is deprecated)` **Some modules do not declare they are compatible with Webpack 5 yet** *(warning messages during `yarn install`)*: this shouldn't be an issue **unless** those modules require a major version upgrade to be officialy compatible (in which case breaking changes could impact us). **We're still using `webpack-cli@3`** which may not support Webpack 5. It currently seems to be OK but we should probably upgrade to `webpack-cli@4` (currently in beta). I took a quick glance at it and it probably won't be an easy thing to do, mainly because of how our "runtime context" works and how the new version of the CLI calls Webpack (through another process). Commits ------- 57f64fa Remove unusued files/constants related to versioning/shared entry 8d7843a Add removed Babel test back 216a5ca Update css-loader and style-loader ddcd6d8 Merge branch 'main' into webpack5 444c37f Merge branch 'main' into webpack5 b292e76 Fix linting issues d576b21 Remove deprecation caused by the DeletedUnusuedEntriesJSPlugin b0f7190 Update some hashes in functional tests 4f6171b Update WebpackManifestPlugin to v3.0.0 and vue-loader to v16.1.0 9af90ee Remove wrong comment 50cea18 Bump min. Typescript version to 3.6.3 1d22520 Don't set hmr option for mini-css-extract-plugin (deprecated since 1.0.0) 564b147 Update Vue.js dependencies 8da531e Replace optimize-css-assets-webpack-plugin by css-minimizer-webpack-plugin f3843ca Update Webpack to 5.0.0
Hi there,
It seems that there is an issue when using the latest versions of the
mini-css-extract-plugin
and this plugin together.We have a test case in Webpack Encore with the following stylesheet:
When we require that file with
[email protected]
everything works as intended, however with[email protected]
we get the following manifest (don't mind the other entries):As you can see, instead of having a "
build/fonts/Roboto.woff2
" key, we get "build/fonts/roboto_font.css
"... which doesn't feel right at all :)I tracked down the issue to this PR: webpack-contrib/mini-css-extract-plugin#177 (comment)
Apparently
webpack-assets-manifest
was also affected and managed to solve it (webdeveric/webpack-assets-manifest#39).The text was updated successfully, but these errors were encountered: