npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

prettier-plugin-classnames

v0.7.4

Published

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

Downloads

54,072

Readme

prettier-plugin-classnames

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

A use case for this plugin.

Installation

For Prettier v2:

npm install -D prettier@^2 prettier-plugin-classnames

For Prettier v3:[^1]

npm install -D prettier prettier-plugin-classnames

[^1]: If your version of prettier-plugin-classnames is less than 0.4.0, you will also need to install @prettier/sync.

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',
};

Options

Custom Attributes

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>"]

Custom Functions

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>"]

Ending Position

First available in v0.5.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.

  • relative example:

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

    --------------------------------------------------| printWidth=50
    export function Callout({ children }) {
      return (
        <div
          className="bg-gray-100/50 border
    border-zinc-400/30 dark:bg-neutral-900/50
    dark:border-neutral-500/30 px-4 py-4 rounded-xl"
        >
          {children}
        </div>
      );
    }
  • absolute-with-indent (first available in v0.6.0) example:

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

Default | CLI Override | API Override --- | --- | --- "relative" | --ending-position <relative\|absolute\|absolute-with-indent> | endingPosition: "<relative\|absolute\|absolute-with-indent>"

Experimental Optimization

First available in v0.7.2.

Find target class names more efficiently. However, some syntax may not be recognized as a target.

Default | CLI Override | API Override --- | --- | --- false | --experimental-optimization | experimentalOptimization: <boolean>

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"
  ]
}