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

mass-publish

v1.1.2

Published

A barebones NPM bulk publisher.

Readme

mass-publish

A barebones bulk NPM publisher.

Getting Started

You can install the CLI from NPM as a devDependency for your project.

npm install mass-publish -D

Then automatically generate mass-publish.json which will be used as the main configuration. It will also keep track of the last published commit for detecting changes.

npx mass-publish init

Configuration

{
    packages: ["packages/"], // Directories to check for changes
    ignoreExtension: [".json"], // Ignore differneces with file extension of a certain type (Optional)
    commitMessage: "chore: release new versions", // Commit message on publish
    git: { // Git credentials (optional as it should try finding system gitconfig)
        name: "DecliningLotus",
        email: "[email protected]",
    },
    commitFrom: "fullsha", // Commit SHA to compare differences from. This is automatically updated on every publish
    commitTo: "fullsha", // Commit SHA to compare differences to. Default is the head commit (Optional)
    noVerify: false, // Refer to changed command flag
    autobump: false, // Refer to bump command flag
    yes: false, // Refer to bump command flag
}

Reference: config.ts

Environment variables

These can be saved in a .env file or through your CI modifying process.env as secrets.

NPM_TOKEN= //https://docs.npmjs.com/creating-and-viewing-access-tokens
GITHUB_TOKEN= //https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

Commands

init

mass-publish init

Creates mass-publish.json with default variables in the root folder.

changed

mass-publish changed

Runs git diff and lists all packages that have changes made to them.

Flags

  • changed --commit-from=fullgitsha - Commit SHA to compare differences from
  • changed --commit-to=fullgitsha - Commit SHA to compare differences to
  • changed --commit-message="commit message" - Change commit message
  • changed --ignore-extension=.js,.ts - Ignore extensions
  • changed --packages=./packages - Package directory

bump

mass-publish bump patch|minor|major|1.0.0

Bumps the package.json of changed packages. A bump argument must be provided that follows semver.

Flags

  • bump patch --no-verify - Skips verifying with NPM registry whether the package version isn't taken.
  • bump major --force-publish - Force bump ALL packages regardless if changed or not.
  • bump 1.2.3 --yes - Skips confirmation to write the bump changes to package.json. Useful in CI.

All previous flags from mass-publish changed can be also be used.

publish

mass-publish publish patch|minor|major|from-package|1.0.0

Publishes all packages to NPM.

Flags

All previous flags from changed and bump can be used.

How It Works

  1. Use Git to compare the last known mass-publish commit (or custom hash) with the latest commits and determine the changes from the diff.
  2. Bump packages and validate they are publishable by comparing versions on the NPM registry using package-json.
  3. Use pacote and libnpmpublish to pack and publish the packages using an async queue.