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

package-registry-manager

v0.27.2

Published

Inspect repositories and guide secure package-registry setup

Readme

package-registry-manager (JavaScript)

Node.js implementation of package-registry-manager. It discovers package manifests, emits registry setup plans, validates packages with exact argument vectors, and guides authenticated setup in the default browser, filling forms in a dedicated visible browser profile.

npx package-registry-manager inspect --repository /path/to/repository
npx package-registry-manager plan --repository /path/to/repository --format json
npx package-registry-manager setup --repository /path/to/repository --registry npm
npx package-registry-manager setup --repository /path/to/repository --all --execute

The package installs the command as both package-registry-manager and package-registry-manager-js; use the second name when the Rust command of the same name is also on your PATH.

Setup is a dry run unless --execute is present. It can publish the first version after confirmation; later versions publish through CI. Missing CI publishing jobs are offered in a draft pull request, and PyPI builds select an interpreter satisfying requires-python. See the repository README for the registry walkthroughs and safety details. Account scans and setup are available in both ports:

package-registry-manager inspect --org link-foundation
package-registry-manager plan --user LOGIN --format json
package-registry-manager setup --org link-foundation --all --execute --browser-import auto

Scans read matched manifests/workflows through gh-manager. Account setup shares one browser, groups npm approvals, and uses CI evidence to preserve healthy tokens or verify replacements before revocation. --secret-name '{REGISTRY}_TOKEN_{REPO}' selects custom credential names.

For legacy crates.io consumers, use setup --org ORG --registry crates-io --rotate-token CARGO_TOKEN --execute --browser-import auto. Rotation preserves scopes and GitHub visibility, stores an expiry companion secret, verifies every consumer in CI before revocation, and lists migration targets. Ordinary crates.io setup uses trusted publishing. inspect --org ORG --token-expiry-days 7 opens the private browser token inventory for advance expiry warnings. See the rotation configuration for matching and failure behavior.

setup --org ORG --registry crates-io --migrate --execute --browser-import auto proposes a reviewed conversion of existing jobs and reusable callers. After merging, rerun it to register trust, and rerun after a real OIDC release to remove verified legacy secrets. Shared organization secrets remain while other consumers exist. The same flow supports --registry npm and --registry pypi; see the migration workflow for supported layouts and safeguards.

Account scans print progress to stderr ([37/169] owner/repository) and stream text inspection results as each repository finishes. JSON inspection remains one report on stdout. Repository, manifest, registry lookup, and release-log failures are included in each repository's error and structured errors fields; valid packages and later repositories are retained. The command exits nonzero after printing all results, and setup --org ORG --all still plans the usable packages. Release health checks only the latest default-branch push or manual run of each detected publishing workflow; it downloads logs only when that run failed. Expired logs retain the failed run's URL and conclusion alongside the error. Account plan and setup JSON reports also include a plans array.

Without --repository, online commands prefer the current repository's organization, then a sole organization membership, then the signed-in GitHub user. Multiple memberships fall back to the user; select an organization with --org. If GitHub account discovery is unavailable, the current directory is inspected. Explicit --repository (including --repository .), --ref, and local --offline commands keep local scope. Both CLIs' GitHub dependency needs Node.js 22.12 or newer and npm; JavaScript checks the runtime before loading it.

See the bootstrap, wrapper and credential guide for branch/PR setup, dual npm names, registry policies and integration limits.

Migration tries trusted publishing first and retains token fallback and expiry metadata by default. --delete-token-secrets explicitly opts into cleanup after OIDC publication and verification that no workflow still uses the credentials. Saved crates.io API sessions run headlessly; sign-in opens a visible window only when user action is needed. Organization migration skips and reports scan errors while continuing for clean repositories.

NuGet setup uses an explicit login profile, package owner and exact package IDs. Trusted publishing is preferred; existing provided fallback credentials are retained. See audit and NuGet configuration for setup, identity decisions and the distinction between verified configuration and release.

NuGet setup resolves reusable publishing identities and verifies saved policy scopes after reload. Package renames repair the oldest matching policy in place, preserving identity and unrelated policies; first publication requires the exact new ID and explicit package:push authorization. Maven Central setup verifies authenticated namespace ownership before a first release, supports explicitly authorized GnuPG signing bootstrap, and preserves actual token expiry metadata. Both runtimes use the same page adapters and GPG driver. See the Central setup configuration.