
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
prettier-plugin-classnames
Advanced tools
A Prettier plugin that wraps verbose class name based on the `printWidth` option.
A Prettier plugin that wraps verbose class name based on the printWidth option.

npm install -D prettier prettier-plugin-classnames
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',
};
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": []
}
}
]
}
List of attributes that enclosing class names.
The class and className attributes are always supported, even if no options are specified.
| Default | CLI Override | API Override |
|---|---|---|
[] | --custom-attributes <string> | customAttributes: ["<string>"] |
List of functions that enclosing class names.
The classNames function is always supported, even if no options are specified.
| Default | CLI Override | API Override |
|---|---|---|
[] | --custom-functions <string> | customFunctions: ["<string>"] |
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>
);
}
| Default | CLI Override | API Override |
|---|---|---|
"absolute" | --ending-position <absolute|relative> | endingPosition: "<absolute|relative>" |
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.
| Default | CLI Override | API Override |
|---|---|---|
false | --syntax-transformation | syntaxTransformation: <boolean> |
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.
| Default | CLI Override | API Override |
|---|---|---|
undefined | --classnames-print-width <number> | classnamesPrintWidth: <number> |
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.

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"
]
}
If your version of prettier-plugin-classnames is less than 0.4.0, you will also need to install @prettier/sync. ↩
FAQs
A Prettier plugin that wraps verbose class name based on the `printWidth` option.
We found that prettier-plugin-classnames demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.