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

babel-plugin-react-cssmoduleify

v1.0.2

Published

Babel plugin to transform traditional classNames to CSS Modules

Downloads

29

Readme

babel-plugin-react-cssmoduleify

Build Status

Note: this plugin now requires Babel 6. To use the Babel 5 support ensure you continue using the pre 1.0 release.

For those who have tasted CSS Modules it is hard to imagine life without it. At Walmart we have a large number of core components that still use traditional CSS classNames and global CSS. This babel plugin is used to convert all global styles into CSS Modules to allow teams to opt-in to CSS Modules.

Previously this attempted to be rather aggressive in it’s resolving of className calls. The current implementation is much simpler and therefore should also support more use cases. Currently classNames must be a string, so we can take any complex assignment and do the lookup on the fly.

It detects the correct className calls in both JSX, React.createElement, and compiled JSX output.

Usage

  • npm install --save babel-plugin-react-cssmoduleify

.babelrc

{
  "plugins": [
    ["babel-plugin-react-cssmoduleify", {
      // this string is applied to the current path to transform or bail out.
      // This is because this plugin is often used on external code.
      "path": "node_modules/regex-path-"
      "cssmodule": "client/styles/base.styl"
      "modules": "es6",
      "log": true
    }]
  ],
}

Options:

  • path: string: string applied as a regex to each compiled file
  • cssmodule: string: path from process.cwd() to global CSS file
  • modules: "es6"|"commonjs" the type of module system cssmodule should be required as.
  • log: boolean log potentially unhandled cases. Default to false.

Examples

Look at the unit tests.

Caveats

This assumes that you can get all exports into one file. Most CSS Preprocessors build on the global nature of CSS and have their own internal global worlds. Importing all of your traditional files into a single file in Stylus or Sass will likely accomplish this.

MIT License

Copyright (c) 2015 Walmart Labs