npm, Yarn, and pnpm
Use rvn npm and native npm tooling to install private JavaScript packages from Ravenstash without modifying your global .npmrc.
Updated 2026-06-24
This guide covers native npm tooling. For the simpler rvn pkg workflow that works without touching npm configuration, see Getting started.
Use placeholder names like acme and frontend below. In the app, replace them with your customer public ID and repository public ID.
rvn npm — native npm with injected auth
rvn npm passes all arguments directly to npm, inserting the private repository URL and auth token from the active session. Your global .npmrc is not modified.
rvn npm install @acme/design-system --repo acme/frontend
The same applies to pnpm, Yarn, and Bun — use rvn npm as the entry point and the arguments are forwarded as-is.
Configure npm directly
For environments where rvn is not available, configure the registry explicitly in the project .npmrc:
@acme:registry=https://rvnsta.sh/npm/x/acme/frontend/
//rvnsta.sh/npm/x/acme/frontend/:_authToken=${RAVENSTASH_TOKEN}
Then install as normal:
npm install @acme/design-system
Publish with rvn pkg
For publishing, use rvn pkg publish rather than npm publish. It uploads directly to Ravenstash:
rvn pkg publish --repo acme/frontend
Current status
Mutable dist-tag management is not implemented yet. Ravenstash derives latest from published version timestamps. The npm implementation supports streaming upload, package documents, version documents, tarball delivery, and /-/ping.
