minicss
css-loader
plugin which generates short css class names. Details in the article
Installation
Install using yarn
yarn add --dev @tinkoff/minicss-class-generator
or npm
npm i --save-dev @tinkoff/minicss-class-generator
Setup
Define options localIdentName
и getLocalIdent
for css-loader
config inside your webpack config:
({
loader: 'css-loader',
options: {
modules: {
getLocalIdent: createGenerator(),
localIdentName: '[minicss]',
},
},
});
For localIdentName
it is possible to pass any template which is accepted by css-loader. E.g. if you want to add the origin filename and the className pass [name]__[local]_[minicss]
as localIdentName
How does it work
Plugin generate unique key for a className using formula ${order}${contentHash}
where contentHash
is a hash of the source file content and order
- ordered key of class definition inside source file. Using contentHash
from source allows to generate less unique string and allows to reuse the same contentHash
for every className that leads for better data compression with gzip/brotli. Using order
helps sustain uniqueness for every className in single source file.
Examples:
[hash:base64:5]
file: Button.css
.2hlLi
.32BZU
[minicss]
file: Button.css
.abhUzy
.bbhUzy