mini-css-class-name

0.15.1 • Public • Published

mini-css-class-name

CI npm version

Minimum size unique CSS class names generator. It can be used with Webpack, Gatsby and PostCSS ecosystems.

Install

npm i mini-css-class-name --save-dev
# or
yarn add mini-css-class-name -D

How to use

const miniCssClassName = require('mini-css-class-name');

const generate = miniCssClassName({
  prefix: 'x__',
  suffix: '--y',
});

generate(); // x__a--y
generate(); // x__b--y
generate(); // x__c--y

Reset method

const miniCssClassName = require('mini-css-class-name');

const generate = miniCssClassName();

generate(); // a
generate(); // b
generate(); // c

generate.reset();

generate(); // a

Exclude Pattern

You can use a regular expression to exclude any characters from the template string.

// remove underscore and dash
const generate = miniCssClassName({ excludePattern: /[_-]/g });

// keep only alphabet characters
const generateABC = miniCssClassName({ excludePattern: /[^a-z]/gi });

Default template string

'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-0123456789';

CSS Modules

css-loader

Use with the Webpack css-loader resolver

const createLocalIdent = require('mini-css-class-name/css-loader');

There are two ways to plugin it's depending on css-loader version.

css-loader <= 1.x || ~2.x

const createLocalIdent = require('mini-css-class-name/css-loader');

const localIndent = createLocalIdent(/* options */);

module.exports = {

  // webpack config ...

  module: {
    rules: [
      {
        test: /\.css$/,
        loader: 'css-loader',
        options: {
          modules: true,
          getLocalIdent: localIndent,
        },
      },
    ],
  },
};

css-loader >= 3.0.0

const createLocalIdent = require('mini-css-class-name/css-loader');

const localIndent = createLocalIdent(/* options */);

module.exports = {

  // webpack config ...

  module: {
    rules: [
      {
        test: /\.css$/,
        loader: 'css-loader',
        options: {
          modules: {
            getLocalIdent: localIndent,
          },
        },
      },
    ],
  },
};

Development and Production Environments

Setup of minimizing the class names only in the production build. In the development environment, you may use a human-readable class name template. It will be more easy to debug your projects.

const createLocalIdent = require('mini-css-class-name/css-loader');

const localIndent = createLocalIdent(/* options */);

module.exports = {

  // webpack config ...

  module: {
    rules: [
      {
        test: /\.css$/,
        loader: 'css-loader',
        options: {
          modules: process.env.NODE_ENV === 'production'
            ? { getLocalIdent: localIndent }
            : { localIdentName: '[path][name]__[local]--[hash:base64:5]' },
        },
      },
    ],
  },
};

postcss-modules

Use minimazer with the PostCSS postcss-modules plugin

const generateScopedName = require('mini-css-class-name/postcss-modules');

Example

const { readFile } = require('node:fs/promises');
const postcss = require('postcss');
const postcssModules = require('postcss-modules');
const generateScopedName = require('mini-css-class-name/postcss-modules');

const getStyles = async () => {
  const path = './styles.css';
  const source = await readFile(path, 'utf8');

  let json;

  const { css } = await postcss([
    postcssModules({
      getJSON(_, jsonData) {
        json = jsonData;
      },
      generateScopedName: generateScopedName(/* options */),
    }),
  ]).process(source, { from: path });

  return { json, css };
};

Gatsby

You also can use it with Gatsby v2, v3, v4 or v5

gatsby-plugin-mini-css-class-name

Options

Name Type Default Description
prefix {String} '' A custom prefix will be added to each class name
suffix {String} '' A custom suffix will be added to each class name
excludePattern {RegExp} null A regular expression for removing characters

License

MIT

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
0.15.1870latest

Version History

VersionDownloads (Last 7 Days)Published
0.15.1870
0.15.02
0.14.12
0.14.02
0.13.253
0.13.114
0.13.02
0.12.21
0.12.15
0.12.01
0.11.10
0.11.01
0.10.08
0.9.428
0.9.30
0.9.10
0.9.00
0.8.00
0.7.00
0.6.30
0.6.10
0.6.01
0.5.11
0.5.00
0.4.30
0.4.10
0.4.00
0.3.00
0.2.00
0.1.00

Package Sidebar

Install

npm i mini-css-class-name

Weekly Downloads

991

Version

0.15.1

License

MIT

Unpacked Size

11.6 kB

Total Files

6

Last publish

Collaborators

  • shoonia