New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

prettier-plugin-classnames

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

prettier-plugin-classnames

A Prettier plugin that wraps verbose class name based on the `printWidth` option.

latest
Source
npmnpm
Version
0.10.1
Version published
Maintainers
1
Created
Source
🌐 Language
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | ไทย | Français | Deutsch | Español | Italiano | Русский | Português | Nederlands | Polski | العربية | فارسی | Türkçe | Tiếng Việt | Bahasa Indonesia | অসমীয়া

prettier-plugin-classnames

A Prettier plugin that wraps verbose class name based on the printWidth option.

A use case for this plugin.

Installation1

npm install -D prettier prettier-plugin-classnames

Configuration

JSON example:

{
  "plugins": ["prettier-plugin-classnames"]
}

JS example (CommonJS module):

module.exports = {
  plugins: ['prettier-plugin-classnames'],
  customAttributes: ['myClassProp'],
  customFunctions: ['clsx'],
};

JS example (ES module):

export default {
  plugins: ['prettier-plugin-classnames'],
  endingPosition: 'absolute',
};

Markdown/MDX Override

This plugin does not support Markdown and MDX, but if this plugin supports a language inside code blocks (e.g. Vue), unintended formatting may occur inside the code blocks.

To prevent unintended formatting, you can use configuration overrides for Markdown and MDX.

JSON example:

{
  "plugins": ["prettier-plugin-classnames"],
  "customFunctions": ["clsx"],
  "overrides": [
    {
      "files": ["*.md", "*.mdx"],
      "options": {
        "plugins": []
      }
    }
  ]
}

Options

Custom Attributes

List of attributes that enclosing class names.
The class and className attributes are always supported, even if no options are specified.

DefaultCLI OverrideAPI Override
[]--custom-attributes <string>customAttributes: ["<string>"]

Custom Functions

List of functions that enclosing class names.
The classNames function is always supported, even if no options are specified.

DefaultCLI OverrideAPI Override
[]--custom-functions <string>customFunctions: ["<string>"]

Ending Position

First available in v0.5.0.
absolute-with-indent was added in v0.6.0.
absolute-with-indent was removed in v0.8.0, but you can get the same output with absolute.
Default value changed from relative to absolute in v0.8.0.

This is the criterion for ending the class name on each line when replacing the original class name with a multi-line class name.

  • absolute example:

    ------------------------------------------------------------| printWidth=60
    export function Callout({ children }) {
      return (
        <div
          className="bg-gray-100/50 dark:bg-neutral-900/50
            border border-zinc-400/30 dark:border-neutral-500/30
            rounded-xl px-4 py-4"
        >
          {children}
        </div>
      );
    }
    
  • relative example:

    ------------------------------------------------------------| printWidth=60
    export function Callout({ children }) {
      return (
        <div
         |------------------------------------------------------------|
          className="bg-gray-100/50 dark:bg-neutral-900/50 border
           |------------------------------------------------------------|
            border-zinc-400/30 dark:border-neutral-500/30 rounded-xl
            px-4 py-4"
        >
          {children}
        </div>
      );
    }
    
DefaultCLI OverrideAPI Override
"absolute"--ending-position <absolute|relative>endingPosition: "<absolute|relative>"

Syntax Transformation

First available in v0.7.7.

If a line wrapping occurs in a class name written in non-expression syntax, it is transformed into expression syntax. This transformation does not support reversible formatting.

DefaultCLI OverrideAPI Override
false--syntax-transformationsyntaxTransformation: <boolean>

Classnames Print Width

First available in v0.10.0.

Specify the print width of the class name. If no value is provided, the printWidth value is used as default.

DefaultCLI OverrideAPI Override
undefined--classnames-print-width <number>classnamesPrintWidth: <number>

Version correlation with sibling plugins

Starting with 0.6.0, when there is a minor release on one side, I plan to reflect that change on the other side as well if possible.

Version correlation.

Compatibility with other Prettier plugins

If more than one Prettier plugin can handle the text you want to format, Prettier will only use the last of those plugins.

In this case, you can configure it as follows by adding prettier-plugin-merge to apply those plugins sequentially.

JSON example:

{
  "plugins": [
    "prettier-plugin-tailwindcss",
    "prettier-plugin-classnames",
    "prettier-plugin-merge"
  ]
}

Stargazers over time

Stargazers over time

Footnotes

  • If your version of prettier-plugin-classnames is less than 0.4.0, you will also need to install @prettier/sync.

Keywords

prettier

FAQs

Package last updated on 26 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts