mirror of
https://github.com/pnpm/pnpm.git
synced 2026-07-21 21:22:26 -04:00
@pnpm/agent.client
Client library for the pnpm agent server. Reads the local store state, sends it to the server, and writes the received files into the content-addressable store.
How it works
- Reads integrity hashes from the local store index (
index.db). - Sends
POST /v1/installto the pnpm agent server with the project's dependencies and the store integrities. - Decodes the binary streaming response — JSON metadata followed by raw file entries.
- Writes each received file directly to the local CAFS (
files/{hash[:2]}/{hash[2:]}). - Writes store index entries for all new packages in a single SQLite transaction.
- Returns the resolved lockfile for use with pnpm's headless install (linking phase).
Usage
This package is used internally by pnpm when the pnpm-registry config option is set. It is not intended to be called directly, but can be used programmatically:
import { fetchFromPnpmRegistry } from '@pnpm/agent.client'
import { StoreIndex } from '@pnpm/store.index'
const storeIndex = new StoreIndex('/path/to/store')
const { lockfile, stats } = await fetchFromPnpmRegistry({
registryUrl: 'http://localhost:4000',
storeDir: '/path/to/store',
storeIndex,
dependencies: { react: '^19.0.0' },
devDependencies: { typescript: '^5.0.0' },
})
console.log(`Resolved ${stats.totalPackages} packages`)
console.log(`${stats.alreadyInStore} cached, ${stats.filesToDownload} files downloaded`)
// lockfile is ready for headless install
Configuration
Add to pnpm-workspace.yaml to enable automatically during pnpm install:
pnpmRegistry: http://localhost:4000