This loader optimizes the output of mini-css-extract-plugin
and/or css-loader
,
entirely removing the potentially large CSS classname mappings normally inlined into your bundle when using CSS Modules.
Run npm install constant-locals-loader
, then make these changes in your Webpack config:
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [
+ 'constant-locals-loader',
{
loader: MiniCSSExtractPlugin.loader,
options: {
+ esModule: true,
},
},
{
loader: 'css-loader',
options: {
modules: true,
+ localsConvention: 'camelCaseOnly',
+ esModule: true,
},
},
],
},
],
},
plugins: [new MiniCSSExtractPlugin({})],
};
This is super cool. Thanks for creating!
Perhaps the const creation could check if reserved JS keywords are being used like switch, function etc. and throw if a classname clashes with this technique. Granted class names like .switch, .var, .let are likely quite rare