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

@prezzee/prototype-hub-cli

v1.0.5

Published

CLI to deploy a static site to a prototype subdomain (*.prototype-hub.development.prezzee.com).

Readme

@prezzee/prototype-hub-cli

prototype-hub — upload a static build to a prototype subdomain served by @prezzee/prototype-hub (*.prototype-hub.development.prezzee.com).

Requires VPN access (the uploader API is private).

Usage

Run via npx — no install required:

npx @prezzee/prototype-hub-cli publish \
  --name my-prototype \
  --dir ./dist \
  --endpoint https://prototype-hub.dev.api.prezzee.net
# Single file
npx @prezzee/prototype-hub-cli publish \
  --name my-prototype \
  --file ./dist/index.html \
  --endpoint https://prototype-hub.dev.api.prezzee.net

If the package is already installed (globally, or as a project dependency), the same commands work via the prototype-hub binary directly, e.g. prototype-hub publish --name my-prototype --dir ./dist ....

Preferred: if the project already has a package.json, install the package as a dependency and add the command as a script instead of running it ad hoc via npx each time:

npm install --save-dev @prezzee/prototype-hub-cli
{
  "scripts": {
    "deploy": "prototype-hub publish --name my-prototype --dir ./dist --endpoint https://prototype-hub.dev.api.prezzee.net"
  },
  "devDependencies": {
    "@prezzee/prototype-hub-cli": "^1.0.0"
  }
}

Installing it pins a specific version (reproducible across machines/CI) and avoids npx's per-run resolution/download; the script can then call the prototype-hub binary directly. Then run npm run deploy (or yarn deploy). With pnpm, use pnpm run deploy — plain pnpm deploy is a reserved built-in pnpm command and won't run this script.

  • --dir must point at your project's build output directory — the folder your framework's build script produces (conventionally ./dist; Next.js/Vite/CRA/etc. all default to this or something similar). It must not be the project root: run your build first (e.g. npm run build), then point --dir at the resulting dist folder. Pointing --dir at a tree containing node_modules or package.json aborts the publish.
  • --dir and --file are mutually exclusive — provide exactly one.
  • --endpoint also via PROTOTYPE_UPLOAD_ENDPOINT.
  • --secret also via PROTOTYPE_SECRET.

Publish secret

The secret is resolved in this order:

  1. --secret
  2. $PROTOTYPE_SECRET
  3. ./publish_secret.txt (current working directory)

If none is found, a strong secret is generated and written to ./publish_secret.txt. Keep it to re-deploy the same prototype — anyone with it can overwrite the prototype.

  • Add publish_secret.txt to .gitignore; never commit it.
  • In CI, set PROTOTYPE_SECRET rather than relying on the file.
  • The CLI never uploads publish_secret.txt, wherever it sits in the tree.

Notes

  • --dir must point at a build output directory, not your whole project. If a node_modules folder or a package.json file is found anywhere in the tree, the publish aborts with a message to move the public files into a directory like ./dist — most frameworks already produce this via a build script (e.g. npm run build./dist).
  • Only whitelisted file types are uploaded: web assets (html/css/js/json/map/txt/xml), images (including svg), fonts, and pdf/csv. Files of other types are skipped locally (with a reason) and the rest of the publish still proceeds; the server also rejects disallowed types if uploaded directly.
  • Files larger than 10 MB are rejected locally and abort the whole publish (API Gateway REST payload cap) — unlike the file-type whitelist, this is a hard stop, not a skip-and-continue.
  • index.html is served no-cache; other files get a short (max-age=60) TTL.
  • Prototype names must match ^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$ and not begin with prezzee.