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

packaton

v0.0.24

Published

Static Site Generator (SSG). Inlines CSS and JS and creates a header file with their corresponding CSP hashes.

Readme

Packaton WIP

Static Site Generator (SSG). Inlines CSS and JS and creates a header file with their corresponding CSP hashes.

Usage Example

https://github.com/ericfortis/mockaton/tree/main/www

Limitations

  • src and href URLs must be absolute
  • must have an index
  • Ignored Documents start with _, so you can't have routes that begin with _
  • Non-Documents and Files outside config.assetsDir are not automatically copied over, you need to specify them.

HTML Template

Optionally, you can create an HTML template. For example, to handle the common header, navigation, and footer.

Assets and CSP

The production bundler inlines the JavaScript and CSS. Also, it computes their corresponding CSP nonce and injects it as well.

Images and Videos (immutable naming)

For long-term caching, media-remaper.js appends an SHA-1 hash to the filenames and takes care of rewriting their src in HTML (only in HTML).

If you want to use media files in CSS, create a similar function to remapMediaInHTML but with a regex for replacing the url(...) content.

Production Build

It crawls the dev server, and saves each route as static html page. It saves the pages without the .html extension for pretty URLs. See Pretty routes for static HTML

Minifiers

import { minify } from 'terser'


const terserOptions = {}

Packaton({
  minifyJS: async js => (await minify(js, terserOptions)).code
})

To avoid minifying, you can pass a=>a