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

@3xpo/create-index

v1.3.10

Published

Creates dark-themed nginx-styled index pages

Downloads

84

Readme

@3xpo/create-index

Creates an nginx-alike minimal index (dark themed)

Why

why not?

Usage

pnpm create @3xpo/index

Features

Static

Unless in Serve mode, it outputs static files! This means anything from nginx try_files to github pages is supported!

Serve Mode

In Serve mode, it serves a directory instead of generating index files. This is similar to nginx with autoindex on.

Warning We don't implement rate limiting on routes that access the file system, meaning this can cause a denial of service if improperly used

Dark theme

It's dark themed - No eye pain here!

Minimal

Nginx-styled single-file outputs that are so small minification isn't even needed!

READMEs

READMEs are included in the index, and are parsed as HTML (with XSS filtering via sanitize-html) - that is if they're in the text forms README.txt and README, or in the HTML form of .html (in which case they aren't wrapped in <pre> tags).

Text READMEs & HTML Tags

Text READMEs can create a handful of html tags (most notably <h1>, <h2>, etc...), although not many. If you're surprised as to why your plain text is getting formatted, that's likely why - add some zero-width spaces or encode the characters to prevent this (intentional) behaviour.

Notice

When serving untrusted directories on sensitive domains, it may be worth removing README.html's, README.txts and READMEs (or pass the env var NO_READMES), as they're included (with XSS filtering via sanitize-html, may not always be sufficient) in the index.

Additionally, you may want to remove img from lib.SanitizerOptions.allowedTags if you're serving untrusted directories on sensitive domains.

Overwrite Dirreads

Don't want all files to be listed (or, want links to anywhere else)? No problem! Just add a indexoverwrite.json (indexoverwrite.json5 also works) file to the directory, structured similarly to this, or this, or even this

Serve

Want to serve a static directory instead of generating index files? No problem! Use pnpm create @3xpo/index serve [dir=.] to serve a directory instead of generating index files.

Builds (and serves) anywhere...

...where NodeJS can run.

Yes, this includes github actions (via create-index-bin, or create-index-action).

It's just a library

It's just a library, so you can use it in your own projects!

Build | NPM

Unsure if this is for you?

Here's an example of this repository, after CI builds everything!