One command.
Every registry.
npm, jsr, crates.io, private registries. One step. If anything fails, pubm undoes the version bump, tag, and commit. Your repo stays clean.
Drop in your manifest, pubm does the rest.
package.json → npm. jsr.json → jsr. Cargo.toml → crates.io. pubm reads your project and figures out the registries. No config file needed.
Releases that don't break things
Every step is validated before it runs. If something goes wrong, everything rolls back. No half-published packages.
All your registries, one command
npm, jsr, crates.io, private registries. Monorepos publish in dependency order. No scripts to chain.
Automatic rollback
Registry rejected your package? pubm undoes the version bump, git tag, and commit. No half-published state, no manual cleanup.
Preflight checks
Branch, working tree, remote sync, login status, publish permissions. All verified before pubm touches anything.
Same command, local and CI
Interactive prompts in your terminal, fully headless in CI. No separate config, no flags to remember.
Start right. Never migrate.
Most release tools lock you into a setup. pubm grows with your project. Add registries, packages, or ecosystems without changing your workflow.
- No migration taxStart with npm only. Add jsr or crates.io when you're ready. Your workflow doesn't change.
- JS + Rust, one pipelinePublishing a Rust crate alongside an npm package? pubm reads both package.json and Cargo.toml and ships everything together.
- Monorepo-ready from day oneOne package today, ten tomorrow. pubm publishes in dependency order. No broken releases from wrong sequencing.
Run `pubm`. That's it.
Version prompts, preflight checks, tests, builds, multi-registry publish. One command handles the entire pipeline.
Pick a version
Run pubm. Choose patch, minor, or major. That's the only decision you make.
Preflight checks
pubm verifies your branch, working tree, remote sync, and registry credentials before changing anything.
Test, build, tag
Your test suite runs, the build executes, then pubm bumps the version and creates a git commit + tag.
Publish everywhere
All registries receive your package at once. If any registry fails, every change rolls back automatically.
Install once. Then just pubm.
New project or existing one. pubm auto-detects your registries from day one. No migration needed later.
❯ npm i -g pubm
❯ pubm