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

stylegrep

v0.1.0

Published

Syntactical search for stylesheets

Downloads

1

Readme

stylegrep

Crawl CSS, SCSS, Sass, and Less files using AST selectors, not janky regular expressions!

Installation

Install it with npm

npm install --save stylegrep

CLI

The stylegrep command line utility requires at least one positional argument: the search selector, similar to other tools like grep and ack. Additional arguments are treated as file names. Directories will be expanded into a glob matching either **/*.{syntax} if the --syntax argument is provided and is not auto, otherwise **/*.{css,sass,scss,less} (all supported syntaxes).

stylegrep then parses each file (or stdin if no files are given), finds all of the nodes matching the search selector, and process them in the following pipeline:

  1. If --context is provided, resolve the selected node's parents that number of times. This allows you to "zoom out" from the selected node so that you can understand where it lives.
  2. Apply all predicate options (see below), filtering the selected nodes by whether they contain (--has), don't match (--not), don't contain (--lacks), or have a specific number of descendants (--count) matching the given selectors.
  3. Limit the returned results if --limit is greater than zero.
  4. Apply additional formatting if --verbose.
  5. Write the results to stdout.
stylegrep [options] selector [predicates..] [files, globs..]

Predicates:
  --has    Only include nodes that contain at least one descendant that matches
           the given selector, a la :has(selector)                      [string]
  --not    Exclude nodes matching the given selector, a la :not(selector)
                                                                        [string]
  --lacks  Just like :not(:has(selector))                               [string]
  --count  Only include nodes for which the number of matched descendants is
           exactly the given count, e.g. "--count variable 2"            [array]

Options:
  --help         Show help                                             [boolean]
  --version      Show version number                                   [boolean]
  --syntax, -s   Which syntax to parse the input file(s) as
              [choices: "auto", "css", "scss", "sass", "less"] [default: "auto"]
  --context, -c  How much context to show                  [number] [default: 0]
  --unique, -u   Only list unique values                               [boolean]
  --verbose, -v  Show more useful information for each result          [boolean]
  --limit, -L    Limit output to a given number of results              [number]

In --verbose mode, output is colored so that you can see where the originally selected node sits in the expanded context:

example image

API

Coming soon!