Skip to content
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

v4.0.0 of css-module has broken ability to use mini-css-extract-plugin with css modules. #556

Closed
tswaters opened this issue Jul 26, 2020 · 5 comments

Comments

@tswaters
Copy link

  • Operating System: Windows 10
  • Node Version: 14.3.0
  • NPM Version: 6.14.5
  • webpack Version: 4.43.0
  • mini-css-extract-plugin Version: 0.9.0

Expected Behavior

Continue to get named exports.

Actual Behavior

No named exports!

Code

// some-css.css
.some-class { color: red; }
// some-js.js
import { someClass } from './some-css'
console.log(someClass) // expected:  some generated class name
// webpack.config.js
// this is a snippet of the loader section
// also of note is that `new MiniCssExtractPlugin()` in the plugins section is also commented out.

{
  test: /\.css$/,
  use: [
    // MiniCssExtractPlugin.loader,
    {
      loader: 'css-loader',
      options: {
        sourceMap: true,
        esModule: true,
        modules: {
          namedExport: true,
          exportLocalsConvention: 'camelCaseOnly',
        },
      },
    },
  ],
},

After uncommenting MiniCssExtractPlugin.loader and new MiniCssExtractPlugin() in plugins section, the export no longer comes forward. The object returned from that entire module is {} and so the class names aren't coming through.

How Do We Reproduce?

You can clone this repo :
https://github.com/tswaters/css-loader-4-0-0-mini-extract-issue

The readme should be pretty self-explanatory -- but

  • npm start and you'll see the index.js file console.logs undefined.
  • comment out the mini-css-extract-plugin lines in webpack.config.js and try again, it will log out properly.... but, no css file.
  • git checkout ., git checkout old-version-of-css-loader, and npm ci -- npm start will now output the class name properly, and the css is output

I'm not sure if If I'm missing some kind of configuration option with css-loader or if it's a bug with mini-css-extract-plugin or some combination of configuration between these two modules that is breaking things....

I had a heck of a time just getting the exports to work properly again under v4.0.0 -- but can't seem to get mini-css-extract-plugin to not interfere with the names exports showing up in generated bundle.

@alexander-akait
Copy link
Member

It was written in the original issue webpack-contrib/css-loader#1029, namedExport is not fully competed, no need new issues, it was implemented in near future

@tswaters
Copy link
Author

Apologies, I didn't see that.

Might I suggest unmarking v4.0.0 as latest if it's not working 100% with the ecosystem?

I lost a good couple hours last night between npm i css-loader and the creation of this ticket.

@alexander-akait
Copy link
Member

@tswaters sometimes using search is not bad idea 😄

@gpoitch
Copy link

gpoitch commented Jul 29, 2020

Came to find/file a similar issue. Seems like this issue should be reopened because mini-extract needs work to support this and webpack-contrib/css-loader#1029 can be closed because that end was completed. Thanks for the work on this!

@alexander-akait
Copy link
Member

@gpoitch we keep this issue in css-loader because it can potential change output, don't worry it will be implemented in near future

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants