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

versionary

v0.32.0

Published

Automatic release framework based on conventional commits and semantic versioning

Readme

Versionary

Versionary is a software-agnostic automated release tool focused on SemVer, Conventional Commits, release-PR workflows, and extensibility.

📖 Documentation: https://versionary.dev/

Why this exists

Versionary is a practical middle ground between semantic-release and release-please:

  • like semantic-release, it supports direct release execution;
  • like release-please, it supports a release PR workflow so maintainers can preview and review changes before publication.

It keeps versioning, changelog generation, tagging, and SCM release metadata in one tool, while leaving package publication (npm, crates.io, etc.) to dedicated CI workflows triggered by tags or releases.

It is built to:

  • support both direct releases and release-PR-gated releases
  • work across ecosystems (Node, Rust, Python, R, Julia, LaTeX, …)
  • stay SCM-agnostic at the core with built-in integration (GitHub first)
  • keep a small, stable core with clear extension points
  • handle trunk-based development and monorepo workflows cleanly

Status: early, alpha-stage development. Breaking changes are expected before 1.0.0.

Quick start

Install:

pnpm add -D versionary    # or npm install --save-dev versionary

Add a versionary.jsonc at the repo root:

{
  "$schema": "https://raw.githubusercontent.com/jolars/versionary/main/schemas/config.json",
  "version": 1,
  "release-type": "node"
}

Check it and preview the next release:

npx versionary verify
npx versionary plan

Then automate it in CI—see the Getting started and GitHub Actions guides.

Documentation

The full documentation lives at https://versionary.dev/:

Scope and non-goals

In scope: semantic version planning from commits, changelog generation, release PR automation, and tags + SCM release metadata (e.g. GitHub Releases).

Out of scope (intentional): publishing artifacts to language registries, replacing package-specific publish tooling, and external/user-provided plugin loading. Use your CI/CD platform for registry publishing, triggered from a created release/tag.

Contributing

See CONTRIBUTING.md for the development setup, commands, and commit conventions.

Architecture layout (canonical)

Runtime code uses a flat src/ layout with clear module boundaries:

  • src/cli/: command router (run, verify, plan, changelog, pr, release)
  • src/release/: release orchestration (plan/changelog/PR/release/state/recovery)
  • src/strategy/: strategy contracts, resolver, and built-in implementations (simple, node, rust, r, latex, python, julia)
  • src/scm/: SCM client contracts and provider implementation(s)
  • src/config/: config loading and schema validation
  • src/git/: git commit/range and repository URL helpers
  • src/types/: shared config/plugin-facing types

Configuration is loaded from versionary.jsonc by default (or versionary.json). The config schema lives in src/config/schema.ts; the editor-facing schemas/config.json is generated via pnpm gen:schema.

Adding a new release strategy

New language strategies can be added internally without changing release orchestration. A new strategy should implement the VersionStrategy contract in src/strategy/types.ts and be wired in src/strategy/resolve.ts.

Checklist for new strategies:

  • define strategy name
  • define getVersionFile(config) defaults and config override behavior
  • implement readVersion(cwd, config) with explicit malformed-file errors
  • implement writeVersion(cwd, config, version) returning deterministic updated file paths
  • optionally implement readPackageName(cwd, config) so monorepo release tags can derive from language metadata (similar to Node/Rust/R)
  • optionally implement propagateDependentPatchImpacts(cwd, packages) if dependency updates in this ecosystem should trigger dependent package patch bumps
  • optionally implement finalizeVersionWrites(cwd, writes, context) for ecosystem post-processing after all target version files are written
  • add focused strategy tests for ecosystem-specific behavior and edge cases
  • add/extend strategy contract tests in tests/strategy-contract.test.ts
  • update schema/docs for new release-type behavior and defaults

Install from GitHub

You can install directly from a git ref:

{
  "devDependencies": {
    "versionary": "github:jolars/versionary#<commit-or-tag>"
  }
}

The package runs a prepare build during git installation so the versionary CLI binary is available after install.

License

MIT