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

@emdzej/npvm

v0.1.1

Published

Node Package Version Manager - CLI for monorepo versioning

Readme

npvm

Node Package Version Manager — CLI for monorepo versioning.

Inspired by axion-release-plugin.

Features

  • Git-based versioning — determine version from commits/tags using conventional commits
  • Workspace version sync — update all package versions in monorepo
  • Dependency updates — sync inter-package dependencies automatically

Installation

npm install -g @emdzej/npvm
# or
pnpm add -g @emdzej/npvm
# or
yarn global add @emdzej/npvm

Quick Start

# Check current/next version
npvm version
npvm version --next

# Release new version
npvm release --commit --tag --push

# Sync workspace dependencies
npvm sync

Commands

npvm version

Determine and display version from git tags/commits.

# Show current version (from latest tag, or 0.0.0 if none)
npvm version

# Show next version based on commits since last tag
npvm version --next

# Verbose output with commit list
npvm version --verbose

# JSON output for scripting
npvm version --format json

# Custom tag prefix (if your tags are v1.0.0 instead of 1.0.0)
npvm version --tag-prefix v

# Check specific branch
npvm version --branch develop

# Pre-release version
npvm version --next --pre-release alpha
# Output: 1.1.0-alpha.5

Options

| Option | Description | Default | |--------|-------------|---------| | -n, --next | Show next version based on commits | - | | --tag-prefix <prefix> | Tag prefix (e.g., v) | none | | --branch <name> | Branch to check | main | | --pre-release <name> | Pre-release identifier | - | | --format <format> | Output format: plain, json | plain | | --verbose | Show detailed information | - |

npvm release

Update all package versions in workspace.

# Release with git-calculated version
npvm release

# Set specific version
npvm release --version 1.2.3

# Full release workflow
npvm release --commit --tag --push

# Pre-release
npvm release --pre-release beta

# Preview changes without modifying files
npvm release --dry-run

Options

| Option | Description | Default | |--------|-------------|---------| | -v, --version <ver> | Explicit version to set | git-calculated | | --tag-prefix <prefix> | Tag prefix | none | | --branch <name> | Branch to check | main | | --pre-release <name> | Pre-release identifier | - | | --tag | Create git tag | - | | --commit | Create git commit | - | | --push | Push to remote | - | | --dry-run | Preview changes | - |

npvm sync

Sync workspace package dependencies to current versions.

# Sync all dependencies
npvm sync

# Preview changes
npvm sync --dry-run

Options

| Option | Description | |--------|-------------| | --dry-run | Preview changes without modifying files |

Behavior

  • Updates dependencies, devDependencies, peerDependencies
  • Skips workspace:* protocol references (pnpm workspace protocol)
  • Preserves version prefix (^, ~)

How It Works

Version Detection

npvm uses conventional commits to determine version bumps:

| Commit Type | Version Bump | |-------------|--------------| | BREAKING CHANGE: or feat!: | Major | | feat: | Minor | | fix:, perf: | Patch | | Others (docs:, chore:, etc.) | None |

Workflow Example

# 1. Check what version will be released
npvm version --next --verbose

# 2. Preview release
npvm release --dry-run --commit --tag

# 3. Execute release
npvm release --commit --tag --push

# 4. Sync any workspace dependencies
npvm sync

Workspace Support

npvm automatically detects workspace configuration:

| Package Manager | Config File | |-----------------|-------------| | pnpm | pnpm-workspace.yaml | | npm | package.jsonworkspaces | | yarn | package.jsonworkspaces |

Troubleshooting

No tags found

If npvm version shows 0.0.0, you haven't created any version tags yet:

# Create initial tag
git tag 0.1.0
git push --tags

Wrong branch

By default, npvm checks the main branch. Use --branch to specify a different branch:

npvm version --branch develop

Pre-release versions

For alpha/beta releases:

npvm release --pre-release alpha --commit --tag
# Creates: 1.1.0-alpha.5 (where 5 is commits since last tag)

License

MIT