Introduction
pnpr is a pnpm-compatible npm registry server, written in Rust. It speaks the
npm registry protocol, so any npm-compatible client (pnpm, npm, yarn) can talk to
it. It proxies packages from a configured upstream such as registry.npmjs.org
and serves them with its own authentication and access controls — roughly the
role verdaccio plays in the JavaScript ecosystem.
pnpr lives in the pnpm monorepo under
pnpr/.
pnpr is experimental and still in active development. Its behavior, configuration, and APIs may change between releases.
What you can use it for
- A private registry — host your organization's private packages, with per-package access and publish rules.
- A caching proxy — mirror an upstream registry (e.g. npmjs.org) to speed up installs and stay resilient to upstream outages.
- An install accelerator — resolve a project's dependency graph server-side and hand pnpm a ready-to-use lockfile. See Install acceleration.
How it relates to pnpm
pnpr is a separate product from the pnpm CLI. The pnpm CLI installs packages on your machine; pnpr is a server you run to host and proxy them. You can use either one without the other — but they're designed to work well together, and pnpm can offload dependency resolution to a pnpr server to make installs faster.
License
pnpr is source-available, not open source. It is licensed under the PolyForm Shield License 1.0.0 — you may run, modify, and self-host pnpr for any purpose except providing a product that competes with it. This is the only part of the pnpm monorepo that is not MIT licensed. See License for details.