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 🙏

© 2025 – Pkg Stats / Ryan Hefner

postcss-define-property

v0.5.0

Published

PostCSS plugin to define and use custom properties

Readme

postcss-define-property

Build Status

PostCSS plugin to define and use custom properties. Not to be confused with the CSS Custom Properties specification which are really variables.

Please see the Compatibility wiki page for use with other plugins.

/* Input */
size: $height $width {
  height: $height;
  width: $width;
}

size: $size {
  height: $size;
  width: $size;
}

.rectangle {
  size: 50px 100px;
}

.square {
  size: 50px;
}
/* Output */
.rectangle {
  height: 50px;
  width: 100px;
}

.square {
  height: 50px;
  width: 50px;
}

There must be a minimum of one space after the semicolon for property definitions; otherwise, it will just appear as a psuedo-selector.

Properties – including native ones – can be redefined. The placement of property definitions matter as they are not hoisted.

Properties can also be overloaded as the parameter quantity forms part of the property's signature.

Options

syntax

The syntax is customisable by providing an object. The following are the available syntax options:

| Syntax | Types | Default | Comment | | ------ |:-----:|:-------:| ------- | | atrule | boolean string | false | true for @property or a string to specify the atrule name | | parameter | string | '$' | sets the parameter prefix within the signature | | property | string | '' | sets the prefix for property invocation | | separator | string | ':' | sets the name/parameter separator within the signature. Cannot be set to '' if not an atrule | | variable | string | '$' | sets the parameter prefix within the body |

As an example, the following syntax options:

properties({
  syntax: {
    atrule: true,
    parameter: '',
    property: '+',
    separator: ''
  }
});

Will be able to parse:

@property size height width {
  height: $height;
  width: $width;
}

.rectangle {
  +size: 50px 100px;
}

The above is useful if one is concerned about not being able to discern custom properties from native ones.

Usage

postcss([ require('postcss-define-property') ])

See PostCSS docs for examples for your environment.

Related

  • Mixins: Mixins for more complicated cases
  • Aliases: Property aliases for simpler cases