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

netlaunch

v2.3.0

Published

Deploy static sites in seconds. Zero config, instant URLs.

Readme

NetLaunch CLI

Deploy static sites in seconds. Zero config, instant URLs.

npx netlaunch deploy -s my-app -f ./dist.zip
# → https://my-app.web.app

Install

npm install -g netlaunch

Or use directly with npx:

npx netlaunch deploy -s my-app -f ./dist.zip

Quick Start

1. Login with Google

netlaunch login

Opens your browser for Google Sign-In. Credentials are stored locally at ~/.netlaunch/credentials.json.

2. Deploy

netlaunch deploy --site my-app --file ./dist.zip

That's it. Your site is live at https://my-app.web.app.

Commands

| Command | Description | |---------|-------------| | netlaunch login | Sign in with Google (opens browser) | | netlaunch logout | Remove stored credentials | | netlaunch whoami | Show current logged-in user | | netlaunch deploy | Deploy a ZIP archive | | netlaunch link <project> | Bind this repo to a Firebase project (writes .netlaunch/config.json) | | netlaunch config use | Pick a project, mint its key (./.netlaunch/) and write config.json | | netlaunch config set | Set Firebase config for self-hosted deploys (global) | | netlaunch config show | Show the resolved binding, key source & deploy mode (doctor) | | netlaunch config remove | Remove this repo's .netlaunch/ binding & key |

Deploy Options

| Flag | Short | Description | |------|-------|-------------| | --site | -s | Site name / subdomain — optional if config.json sets it | | --file | -f | Path to ZIP archive | | --key | -k | API key — optional if logged in | | --target | -t | Target name from a multi-env config.json | | --yes | -y | Skip the production confirmation (required in CI for prod) | | --hosted | | Force deploy to NetLaunch (ignore saved config) |

Self-Hosted Deployments (per-repo)

Deploy to your own Firebase project instead of NetLaunch's. Each repo is bound to its own project via a committed .netlaunch/config.json, so the binding travels with the repo (teammates, CI, a new laptop) while the secret key stays local and gitignored.

.netlaunch/
  config.json           # COMMITTED — { project, site, ... }. The binding. No secrets.
  service-account.json  # GITIGNORED — the key. Per-developer, per-machine.

Connect a repo

# Pick a project, mint a key, AND write the committed config.json (needs gcloud, or use --file)
netlaunch config use

# Or just DECLARE the binding (no key, no gcloud) — for authors & teammates:
netlaunch link my-project --site my-site
netlaunch link my-project --prod          # mark production (red banner + confirm)

# Bring your own key:
netlaunch config use --file ./service-account.json

Commit .netlaunch/config.json. The CLI adds service-account.json to .gitignore for you.

Deploy

# project & site come from config.json — no flags needed
netlaunch deploy -f ./dist.zip

# multi-environment config:
netlaunch deploy --target prod -f ./dist.zip

# override: deploy to NetLaunch hosting instead
netlaunch deploy -s my-app -f ./dist.zip --hosted

netlaunch config show      # doctor: shows project, site, key source & mode
netlaunch config remove    # drop this repo's binding & key

Clone-and-go

A teammate clones a repo that has a committed config.json but no key. netlaunch deploy reads the project from config.json, and — if no key is found locally, in ~/.netlaunch's cache, or in the environment — prompts them to authenticate once for that project.

Multi-environment config.json

{
  "version": 1,
  "defaultTarget": "staging",
  "targets": {
    "staging": { "project": "acme-staging", "site": "acme-staging" },
    "prod":    { "project": "acme-prod", "site": "acme-www", "production": true }
  }
}

Dashboard

Go to SettingsFirebase Configuration → upload your service account JSON.

Examples

# Login first (one-time)
netlaunch login

# Deploy a site
netlaunch deploy -s portfolio -f ./build.zip

# Deploy with explicit API key (no login needed)
netlaunch deploy -k fk_abc123 -s my-app -f ./dist.zip

# Self-hosted: set config and deploy
netlaunch config set -f ./my-firebase-key.json --sync
netlaunch deploy -s my-app -f ./dist.zip

# Use environment variable for CI/CD
export NETLAUNCH_KEY=fk_your_key
netlaunch deploy -s my-app -f ./dist.zip

CI/CD

NetLaunch hosting — set NETLAUNCH_KEY:

# GitHub Actions
- name: Deploy
  env:
    NETLAUNCH_KEY: ${{ secrets.NETLAUNCH_KEY }}
  run: npx netlaunch deploy -s my-app -f ./dist.zip

Self-hosted — commit .netlaunch/config.json, provide the key via NETLAUNCH_SA_JSON (or GOOGLE_APPLICATION_CREDENTIALS), and pass --yes to clear the production gate:

- name: Deploy to our Firebase project
  env:
    NETLAUNCH_KEY: ${{ secrets.NETLAUNCH_KEY }}
    NETLAUNCH_SA_JSON: ${{ secrets.FIREBASE_SA_JSON }}
  run: npx netlaunch deploy --target prod --yes -f ./dist.zip

Note — one-time sync required. Self-hosted deploys are server-mediated: the backend uses the service-account config stored for your account, not the key passed on each run. Sync it once with netlaunch config use (or via the dashboard). After that, a CI run authenticated with NETLAUNCH_KEY deploys to your synced project; NETLAUNCH_SA_JSON is still read locally to resolve and validate the binding (the project mismatch guard), not to re-sync.

On each run: if a login session is present the CLI re-syncs the key (and aborts if that sync fails, rather than deploy to a stale target); with no session (typical CI) it cannot re-sync, so it proceeds on the previously-synced config and prints a warning. NETLAUNCH_SA_JSON is still used locally to resolve/validate the target (project mismatch guard).

Requirements

  • Node.js >= 18
  • A ZIP file with index.html at root (or in a subdirectory)

Links

License

MIT