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 🙏

© 2025 – Pkg Stats / Ryan Hefner

publish-snapshot

v0.0.0-snapshot-36b3062

Published

CLI utility for publishing a snapshot build of your npm package by appending the current Git commit hash to the package version. The command temporarily mutates `package.json`, publishes with npm, and immediately restores the original file.

Readme

publish-snapshot

CLI utility for publishing a snapshot build of your npm package by appending the current Git commit hash to the package version. The command temporarily mutates package.json, publishes with npm, and immediately restores the original file.

  • Publishes the package with a version like 1.2.3-snapshot-a1b2c3d
  • Aborts if your Git working tree is dirty or package.json already holds a pre-release version
  • Forwards any extra CLI flags directly to npm publish

Quick start

npx -y publish-snapshot@latest

Run the command inside the root of the package you want to publish. The script performs the following steps:

  1. Prints the tool version for traceability.
  2. Verifies the Git repository has no uncommitted changes.
  3. Reads the current package.json version.
  4. Creates a snapshot version in the form originalVersion-snapshot-<shortSHA>.
  5. Temporarily writes that version to package.json, runs npm publish, then restores the original file contents.

If any of the steps fails, the command exits with code 1 and package.json is reverted to its original state.

Passing arguments to npm publish

Extra arguments after the command are forwarded to npm publish. For example, to publish to a specific dist-tag and registry:

npx -y publish-snapshot@latest --tag snapshot --registry https://registry.npmjs.org/

Requirements & guarantees

  • Node.js 20+ (needed for JSON import attributes and top-level await)
  • A clean Git working tree; the script refuses to run otherwise
  • npm available on your PATH

The original package.json is always restored, even when npm publish fails.

Common issues

  • Dirty working tree: Commit or stash changes before running. The command uses git status --porcelain to enforce a clean tree.
  • Pre-release versions: The tool rejects versions such as 1.0.0-beta.1. Snapshot publishing only works from release versions.
  • SemVer parsing errors: Ensure your package.json version follows semantic versioning (e.g. 1.2.3).

Local development

Clone the repository, install dependencies, and use the Verdaccio script to exercise the CLI against a private registry:

npm install
npm run registry # starts Verdaccio locally on http://127.0.0.1:4873/
npm run dev      # publishes to the local registry using snapshot semantics

Contributions are welcome via pull requests.