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

unique.macro

v1.0.1

Published

> Create unique and deterministic strings with a babel macro

Downloads

22

Readme

unqiue.macro

Create unique and deterministic strings with a babel macro

Babel Macro Build Status

unique.macro is a babel macro that generates a unique string based on filename to the nearest package.json, the name in the nearest package.json and the contents of the file it's in. unique.macro is primarily useful for generating unique class names to use as selectors with css-in-js libraries like emotion or glamor. Using unique.macro is better for Server Side Rendering than Math.random or something like it because it will use the same class on the server as on the client so there won't be any mismatches.

Install

yarn add --dev babel-macros unique.macro

or

npm install --save-dev babel-macros unique.macro

Configuration

unique.macro requires babel-macros to be in your babel config as below.

Via .babelrc (Recommended)

.babelrc

{
  "plugins": ["babel-macros"]
}

Via CLI

babel --plugins babel-macros script.js

Via Node API

require('babel-core').transform('code', {
  plugins: ['babel-macros'],
})

Use

import unique from 'unique.macro'

const uniqueString = unique()


// use it with a css-in-js library like emotion

import { css } from 'emotion'

const classWithStyles = css`
  background-color: green;
  .${uniqueString} {
    background-color: hotpink;
  }
`

<div className={classWithStyles}>
  some text with a green background
  <span className={uniqueString}>some text with a hotpink background</span>
</div>

Prefix

By default the unique hash generated by babel-macros is prefixed with css- so that it can be used with jest-glamor-react in snapshots and be replaced with glamor-{index}. The prefix can be changed in two ways.

Inline

import unique from 'unique.macro'


const someClass = unique('some-other-prefix-')



// note the string MUST be inline, e.g. this won't work
const customPrefix = 'another-prefix-'
const throwsAnError = unique(customPrefix)

Config File

unique.macro also supports changing the prefix with babel-macros' config. If there is an inline prefix it will be used instead of the config file. babel-macros supports configuration via cosmiconfig so it can be configured with any of the ways below.

  • .babel-macrosrc
  • .babel-macrosrc.json
  • .babel-macrosrc.yaml
  • .babel-macrosrc.yml
  • .babel-macrosrc.js
  • babel-macros.config.js
  • babelMacros in package.json

Example .babel-macrosrc.json

{
  "unique": {
    "prefix": "some-other-prefix-"
  }
}

Thanks

Thanks to the styled-components team for writing the code to generate the unique hash.

LICENSE

MIT