npm Registry API Client
    Preparing search index...

    Class PackageResource

    Represents an npm package resource, providing access to package metadata, versions, dist-tags, and download statistics.

    Implements PromiseLike<NpmPackument> so it can be awaited directly to fetch the full packument, while also exposing sub-resource methods.

    // Await directly to get full package metadata
    const pkg = await npm.package('react');

    // Get a specific version
    const v18 = await npm.package('react').version('18.2.0');

    // Get dist-tags
    const tags = await npm.package('react').distTags();

    // Get download stats for last month
    const stats = await npm.package('react').downloads();

    // Get daily download breakdown for a custom date range
    const range = await npm.package('react').downloadRange('2024-01-01:2024-01-31');

    Implements

    Index

    Methods

    • Fetches CDN usage statistics for this package from jsDelivr.

      CDN stats reflect real browser/frontend usage, complementing npm download counts which measure install-time usage.

      GET /package/npm/{name}/stats/{groupBy}/{period} (via data.jsdelivr.com/v1)

      Parameters

      • groupBy: JsdelivrGroupBy = 'version'

        Group results by 'version' (default) or 'date'

      • period: JsdelivrPeriod = 'month'

        Time period: 'day', 'week', 'month' (default), or 'year'

      • Optionalsignal: AbortSignal

        Optional AbortSignal to cancel the request

      Returns Promise<JsdelivrStats>

      CDN hit counts, bandwidth, rank, and breakdown by version or date

      const stats = await npm.package('react').cdnStats();
      console.log(stats.rank); // 1
      console.log(stats.total); // 1234567890
    • Fetches all dist-tags for this package.

      GET /-/package/{name}/dist-tags

      Parameters

      • Optionalsignal: AbortSignal

        Optional AbortSignal to cancel the request

      Returns Promise<NpmDistTags>

      A map of tag names to version strings

      const tags = await npm.package('react').distTags();
      // { latest: '18.2.0', next: '19.0.0-beta.1' }
    • Fetches the per-day download breakdown for this package over a given period.

      GET /downloads/range/{period}/{name} (via api.npmjs.org)

      Parameters

      • period: NpmDownloadPeriod = 'last-month'

        Named period or date range (default: 'last-month')

      • Optionalsignal: AbortSignal

        Optional AbortSignal to cancel the request

      Returns Promise<NpmDownloadRange>

      Download range data with a per-day array

      const range = await npm.package('react').downloadRange('2024-01-01:2024-01-31');
      range.downloads.forEach(d => console.log(d.day, d.downloads));
    • Fetches the total download count for this package over a given period.

      GET /downloads/point/{period}/{name} (via api.npmjs.org)

      Parameters

      • period: NpmDownloadPeriod = 'last-month'

        Named period or date range (default: 'last-month')

      • Optionalsignal: AbortSignal

        Optional AbortSignal to cancel the request

      Returns Promise<NpmDownloadPoint>

      Download point data including total count and date range

      const stats = await npm.package('react').downloads('last-week');
      console.log(stats.downloads); // 12345678
    • Fetches the full packument (all versions metadata) for this package.

      GET /{name}

      Parameters

      • Optionalsignal: AbortSignal

        Optional AbortSignal to cancel the request

      Returns Promise<NpmPackument>

      The full packument object

    • Fetches the current maintainers of this package.

      Internally fetches the packument and returns the maintainers array.

      GET /{name}

      Parameters

      • Optionalsignal: AbortSignal

        Optional AbortSignal to cancel the request

      Returns Promise<NpmPerson[]>

      Array of maintainer entries (name, email, url)

      const maintainers = await npm.package('typescript').maintainers();
      maintainers.forEach(m => console.log(m.name, m.email));
    • Fetches this package's entry score from the npm registry search index.

      Parameters

      • Optionalsignal: AbortSignal

        Optional AbortSignal to cancel the request

      Returns Promise<NpmsScore>

      Aggregate score data

      npm no longer computes quality, popularity, or maintenance scores: score.detail is always 1 for every metric, and score.final is the search relevance of the package name (e.g. 2467.3), not a 0–1 quality score. Use PackageResource.downloads for popularity, or the downloads and dependents fields of NpmClient.search results.

      Sourced from the npm registry's own search index (/-/v1/search), since npms.io — which used to provide a detailed per-metric breakdown — has been discontinued. evaluation is kept on the return type for backwards compatibility but is never populated.

      GET /-/v1/search?text={name}&size=1

      with status 404 if the package has no search entry (e.g. it does not exist, or it is deprecated and excluded from search)

      const score = await npm.package('react').score();
      console.log(score.score.final); // 2467.3 — search relevance, not quality
    • Fetches the publish size and full install size (including all transitive dependencies) for the latest version of this package from Packagephobia.

      GET /v2/api.json?p={name} (via packagephobia.com)

      Parameters

      • Optionalsignal: AbortSignal

        Optional AbortSignal to cancel the request

      Returns Promise<PackagephobiaSize>

      Publish and install size in bytes, file counts, and human-readable strings

      const size = await npm.package('react').size();
      console.log(size.install.pretty); // "300 kB"
      console.log(size.install.bytes); // 307200
    • Fetches all published versions of this package as an ordered array.

      Internally fetches the packument and converts the versions map to an array sorted from oldest to newest by publication time (packument.time). Versions without a publication time are placed last, in registry order.

      GET /{name}

      Parameters

      • Optionalsignal: AbortSignal

        Optional AbortSignal to cancel the request

      Returns Promise<NpmPackageVersion[]>

      Array of version manifests sorted by publication order

      const versions = await npm.package('typescript').versions();
      console.log(versions.map(v => v.version).join(', '));