Registry / devops / fetch-from-npm-registry

fetch-from-npm-registry

JSON →
library4.1.2jsnpmunverified

A fetch library specialized for interacting with the npm registry. Current version: 4.1.2. It is part of the pnpm monorepo and designed to handle npm registry quirks like Corgi metadata (compressed manifests). It ships TypeScript types and requires Node.js >=10.13. Its key differentiator is built-in support for the npm registry's full versus filtered metadata, as well as authentication and retry logic tuned for the npm API. It depends on @pnpm/logger for logging.

npm install fetch-from-npm-registry
INSTALL
IMPORT
SIG · FETCH-FROM-NPM-REG
F
fetch-from-npm-registry
devopsjavascriptv4.1.2
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

default (createFetcher)
import createFetcher from 'fetch-from-npm-registry'
const createFetcher = require('fetch-from-npm-registry')
ESM default import is recommended for TypeScript and modern Node. CommonJS require works but may not resolve default correctly.
createFetchFromNpmRegistry
import { createFetchFromNpmRegistry } from 'fetch-from-npm-registry'
import createFetchFromNpmRegistry from 'fetch-from-npm-registry'
Named export exists since v4.
types (FetchOptions, FetchResult)
import type { FetchOptions, FetchResult } from 'fetch-from-npm-registry'
TypeScript users may import these types for type safety.

Shows how to use the fetcher with a token from environment variable, requesting full metadata.

import createFetcher from 'fetch-from-npm-registry'; const fetchFromNpmRegistry = createFetcher({ userAgent: 'my-app/1.0.0', auth: { token: process.env.NPM_TOKEN ?? '', }, }); async function getPackageMetadata(packageName: string) { const url = `https://registry.npmjs.org/${encodeURIComponent(packageName)}`; const response = await fetchFromNpmRegistry(url, { fullMetadata: true }); if (!response.ok) { throw new Error(`Failed to fetch metadata: ${response.status}`); } const metadata = await response.json(); return metadata; } getPackageMetadata('is-positive') .then(meta => console.log(JSON.stringify(meta.versions['1.0.0'], null, 2))) .catch(err => console.error(err));
Debug
Known issues
breakingVersion 4.0 changed from CommonJS to ESM-only. Use import instead of require.
fix
Switch to dynamic import or update to ESM-compatible setup.
affects: >=4.0.0
deprecatedThe option `opts.fullMetadata` is deprecated in favor of `opts.filtered` (inverted logic).
fix
Use `filtered: false` instead of `fullMetadata: true`.
affects: >=3.0.0
gotchaThe `@pnpm/logger` peer dependency is required. If not installed, the constructor will throw.
fix
Install @pnpm/logger as a dependency or peer dependency.
affects: >=2.0.0
breakingThe `fetch` function no longer returns a polyfill Response, but a native-like Response (requires Node 10+).
fix
Check for `.ok` and `.status` property, not `statusCode`.
affects: >=3.0.0
gotchaThe package sets `Accept` header to `application/vnd.npm.install-v1+json` by default, which returns corgi metadata. To get full metadata, set `fullMetadata: false` (or `filtered: false` in newer versions).
fix
If you need full package metadata, explicitly set `filtered: false` in options.
affects: >=1.0.0
deprecatedSupport for Node 10 is deprecated; Node 14+ recommended.
fix
Upgrade to Node 14 or later.
affects: >=4.0.0
Errors
Common errors & fixes
TypeError: createFetcher is not a function
Using require instead of import; default export not handled.
fix
Use `const createFetcher = require('fetch-from-npm-registry').default` for CJS, or better switch to ESM import.
Cannot find module '@pnpm/logger'
Missing peer dependency.
fix
Run `npm install @pnpm/logger` or `pnpm add @pnpm/logger`.
TypeError: response.json is not a function
Response is not a standard Response object (e.g., in older versions).
fix
Use `response.text()` and parse manually, or upgrade to version >=3.0.0.
Error: Invalid URL / Unsupported protocol
URL must be an absolute URL to registry.npmjs.org.
fix
Ensure the URL starts with 'https://' or 'http://'.
Upgrade
Version history
4.1.2latest on npm
Audit
Dependencies
@pnpm/loggerrequiredPeer dependency for logging
Agent activity
4 hits · last 30 days
node
4
Resources
fetch-from-npm-registry — npm install fetch-from-npm-registry · libregistry