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

@projectwallace/css-parser

v0.13.4

Published

High-performance CSS lexer and parser, optimized for CSS inspection and analysis

Readme

CSS Parser

[!WARNING] This is a very experimental CSS parser. Expect several bugs and inconveniences!

High-performance CSS parser optimized for static analysis and formatting

Built for speed and efficiency, this parser handles large CSS files with minimal memory overhead and blazing-fast parse times. Designed with a data-oriented architecture using a single contiguous memory arena for zero allocations during parsing.

This parser was heavily influenced by CSSTree, one of the most robust CSS parsers available. Some of the parsing mechanics are taken from CSSTree, as well as some of the performance mechanics, but a lot of things are very different which is why this isn't a direct fork and there is very little overlap in API's.

Features

  • Modern CSS support - CSS Nesting, :is(), :where(), :has(), @layer, @container
  • Error recovery - Continues parsing on malformed CSS
  • Location tracking - Line, column, offset, and length for all nodes
  • Performance - Low memory usage and excellent parsing speed
  • Small bundle size - Fast download and installation in any environment

Installation

npm install @projectwallace/css-parser

Usage

import { parse, NODE_STYLE_RULE, NODE_DECLARATION } from '@projectwallace/css-parser'

const ast = parse(`
  body {
    color: red;
    margin: 0;
  }

  @media (min-width: 768px) {
    .container {
      max-width: 1200px;
    }
  }
`)

// Iterate over top-level rules
for (const rule of ast) {
	if (rule.type === NODE_STYLE_RULE) {
		const selector = rule.first_child
		console.log(`Selector: ${selector.text}`)

		// Iterate over declarations
		for (const node of rule) {
			if (node.type === NODE_DECLARATION) {
				console.log(`  ${node.property}: ${node.value}`)
			}
		}
	}
}

Performance

  • Small install size (~200kB)
  • Zero allocations during parsing - all memory allocated upfront based on real world heuristics, which also helps prevent garbage collection running often
  • Cache-friendly data layout - contiguous memory for sequential access powered by concepts of Data Oriented Design
  • First-class comment and location support - while still being performant because analysis requires constant access to lines and columns
  • No syntax validation - focusing only on the raw data we can skip expensive syntax files and MDN data syncs

Documentation

See API.md for complete documentation of all parser functions and options.

Non-goals

  • No syntax validation - this parser does not try to validate your CSS structure. Everything can be anything
  • No custom syntax support - we're leaving the era of CSS preprocessors so we only focus on CSS

License

MIT