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

swc-plugin-css-modules

v1.0.0

Published

A [SWC](https://swc.rs) plugin to use [CSS Modules](https://github.com/css-modules/css-modules).

Downloads

18,119

Readme

swc-plugin-css-modules

A SWC plugin to use CSS Modules.

Instead of creating an object, the plugin injects the css class names directly into the js code. This allows to reduce the size of the bundle.

// Input Code
import styles from "./style.css";
element.innerHTML = '<div class="' + styles.className + '">';

// Output   ↓ ↓ ↓ ↓ ↓ ↓
import "./style.css";
element.innerHTML = '<div class="' + "style__className___clZD5" + '">';

Installation

npm:

npm i -D swc-plugin-css-modules

yarn:

yarn add -D swc-plugin-css-modules

You can check the compatibility of versions on https://plugins.swc.rs/

Usage

Via .swcrc

{
  "jsc": {
    "experimental": {
      "plugins": [
        [
          "swc-plugin-css-modules",
          {
            "generate_scoped_name": "[name]__[local]___[hash:base64:5]"
          }
        ]
      ]
    }
  }
}

Using css modules in code:

import styles from "./style.module.css";

// ✅ ok
const className = styles.className;

// ✅ ok
const className = styles["class-name"];

// ⛔ Computed hit cannot be injected
const className = styles["class" + "Name"];

// ⛔ Computed hit cannot be injected
const className = styles[localClassName];

// ✅ ok
const className = classNames(styles.title, styles.className);

// ⛔ Computed hit cannot be injected
const className = getClassNameFromCssModules(styles);

Options

generate_scoped_name

Default: "[hash:base64]"

Allows to configure the generated local ident name.

Supported template strings:

  • [name] the basename of the resource
  • [folder] the folder the resource relative
  • [ext] - extension with leading
  • [hash] - the hash of the string(by default it's the hex digest of the xxhash64 hash)
  • [<hashFunction>:hash:<hashDigest>:<hashDigestLength>] - hash with hash settings
  • [local] - original class

Supported hash functions:

  • xxhash64
  • md4
  • md5
  • sha1
  • sha224
  • sha256
  • sha384
  • sha512

Supported hash digests:

  • hex
  • base32
  • base64

hash_prefix

Add custom hash prefix to generate more unique classes.

css_modules_suffix

Default: ".css"

root

If you need, you can pass any needed root path.