Skip to content

πŸ’… Make your scoped CSS modules class names clear, consistent and readable by automatically adding component names β€” a better alternative to the default Vite behavior

License

Notifications You must be signed in to change notification settings

teplostanski/vite-plugin-readable-classnames

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

English | Russian

vite-plugin-readable-classnames

NPM Version NPM License NPM Type Definitions NPM Downloads GitHub commit activity Coverage

Make your scoped CSS module class names clear and readable β€” this plugin automatically adds the module filename and other useful info to class names for easier development.

Included in the Awesome Vite.js list Awesome

πŸ“¦ Installation

npmjs.com β€’ yarnpkg.com

npm install -D vite-plugin-readable-classnames

yarn add -D vite-plugin-readable-classnames

pnpm add -D vite-plugin-readable-classnames

bun add -d vite-plugin-readable-classnames

Migration from vite-plugin-pretty-module-classnames

vite-plugin-readable-classnames is the new identity for vite-plugin-pretty-module-classnames. This guide will help you migrate from vite-plugin-pretty-module-classnames to vite-plugin-readable-classnames.

  1. Uninstall the old plugin and install the new one
npm uninstall vite-plugin-pretty-module-classnames
npm install -D vite-plugin-readable-classnames
  1. Update the import and plugin usage in your vite.config.js or vite.config.ts
- import prettyModuleClassnames from 'vite-plugin-pretty-module-classnames'
+ import readableClassnames from 'vite-plugin-readable-classnames'

export default defineConfig {
-  plugins: [prettyModuleClassnames()]
+  plugins: [readableClassnames()]
}

🦾 Features

  • Framework-agnostic:
    • Tested on projects with VanillaJS React Vue Astro
    • Potentially works with any framework. If you have any problems, write to the Issue
  • Universal:
    • Compatible with both CommonJS and ES Modules
    • Support Vite 2.x
  • Customizable: Flexible configuration through options object

πŸ€” What Problem Does This Plugin Solve?

In React with CSS modules, we're used to class names like SomeComponent__classname_hash. By default, Vite generates names in the format __classname_hash, omitting the component name, which makes debugging more difficult.

If you try to add the component name through the generateScopedName: '[name]__[local]_[hash:base64:5]' configuration, React will add an extra -module suffix, and in Vue, such configuration may lead to build errors.

This plugin solves these problems and ensures predictable, readable class naming in the format ComponentName__classname_hash regardless of the framework.

Tip

What are generated class names and where are they visible?

When you use CSS modules, the resulting class names are automatically generated by the bundler (e.g., Vite or Webpack). These names are visible:

  • in the HTML code of the page (through browser DevTools);
  • in the final CSS file;
  • when debugging in the browser as you search for the right element or style.

Readable class names that include the component name help you quickly understand where a style comes from, making debugging and project maintenance easier.

βš™οΈ Usege

Example
// vite.config.js
// ...
import readableClassnames from 'vite-plugin-readable-classnames'

export default defineConfig({
  plugins: [readableClassnames()],
})

πŸ“š Documentation

For full documentation, visit vite-plugin-readable-classnames.teplostan.ski [ EN | RU ].

🀝 Contributing

Want to contribute? Awesome! To show your support is to star the project, or to raise issues on GitHub.

Before you contribute to the development of the project, read the rules.

Thanks again for your support, it is much appreciated! πŸ™

Β© License

MIT License Β© 2024-2025 teplostanski

❀ Fund this project

donate.teplostan.ski

About

πŸ’… Make your scoped CSS modules class names clear, consistent and readable by automatically adding component names β€” a better alternative to the default Vite behavior

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

Contributors 2

  •  
  •