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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@teacss/cli

v0.10.11

Published

The teacss-cli command: scan content and generate CSS, with watch mode and a programmatic build API.

Readme

@teacss/cli

The teacss-cli command: scan source files and generate CSS, with watch mode.

npm install --save-dev @teacss/cli @teacss/preset-standard
npx teacss-cli "src/**/*.{ts,tsx,html}" -o tea.css
npx teacss-cli "src/**/*.{ts,tsx,html}" -o tea.css --watch
npx teacss-cli --check

Use the equivalent local-binary command for pnpm, Yarn, or Bun. Run teacss-cli --help for all options. Install every preset package the CSS entry names; @presets "standard,icons,official" needs @teacss/preset-standard, @teacss/preset-icons and @teacss/preset-official.

A pattern's wildcards, and a pattern that names a directory, never walk into node_modules or .git. To scan files there, name the path, such as "node_modules/pkg/*.html".

Matched CSS files are merged into the output. The current output, the -o path or tea.css with --stdout, is never read back. An output whose merged CSS carries a TeaCSS directive ends with a /* teacss-cli output <hash> */ seal, and every run skips a matched file whose seal is intact. An output without directives has no seal, so an old one at any other matched path is read as a source. Write outputs outside the patterns, or delete old ones.

Without a CSS entry, the standalone command needs only this package:

npx teacss-cli "src/**/*.{ts,tsx,html}" --preset standard -o tea.css

Configuration comes from index.css, src/index.css, or package.json#teacss.entry:

@presets "standard";
@source "./src/**/*.{ts,tsx,html}";
@teacss;

The CLI never selects a preset implicitly. Without a CSS entry, pass --preset standard. --check prints the resolved project, entry, presets, sources, rules, and shortcuts without writing CSS.

Source transformers may produce an empty file; its original classes then emit no utilities. --rewrite writes that empty result back to the source, while normal generation leaves the source file intact.

Programmatic watch

import { build } from "@teacss/cli";

const session = await build({
  patterns: ["src/**/*.{ts,tsx,html}"],
  outFile: "tea.css",
  watch: true,
});

await session.dispose();

Each session owns its watcher. Disposal cancels queued builds and waits for active work. Recoverable watch errors are reported without changing the host process exit code; startup failures still set the CLI exit status.

Use a build adapter when another tool owns the module graph. Class sorting is editor-owned, not a CLI command.

Pre-1.0.

Watch mode reloads source-scanned @shortcut and @safelist declarations when matched CSS is added, changed, removed, or recreated, including external absolute sources and initially missing source roots. CLI entry patterns still determine which files contribute extracted utility tokens. A bounded declaration check every 500 ms also recovers changes omitted by native callbacks; unchanged declarations do not reload configuration or rebuild.

Glob-matched CSS file symlinks observe their physical file targets through filtered shallow parent watches, including recovery after a failed member read. Nested source directory symlinks observe physical target changes, including empty targets and target deletion or recreation. Missing routes use shallow parent observation. Failed reads retain the last accepted configuration.