README.md

July 19, 2026 ยท View on GitHub

This is the function that powers the core of building, minifying and gzipping of packages in bundlephobia.

Requirements

package-build-stats supports maintained Node.js LTS releases: Node.js 22 or newer is required, and Node.js 24 is the recommended runtime.

Usage

import { getPackageStats } from 'package-build-stats'

Building packages from npm

Building the latest stable version
const results = await getPackageStats('moment')
Building a specific version / tag
const results = await getPackageStats('moment@2.24.0')
Building local packages (beta)
const results = await getPackageStats('~/dev/my-npm-package') // must have a package.json
Using different package managers
// Use Bun for 13x faster installs!
const results = await getPackageStats('lodash', { client: 'bun' })

// Or use pnpm
const results = await getPackageStats('lodash', { client: 'pnpm' })

// Or use yarn
const results = await getPackageStats('lodash', { client: 'yarn' })

Passing options to the build

const results = await getBuiltPackageStats('moment', options)
Options
OptionValuesDefaultDescription
clientnpm, yarn, pnpm, or bunnpmWhich client to use to install package for building. Bun is 13x faster!
limitConcurrencytrue or falsefalseWhen using yarn as the client, use the network mutex to limit concurrency
networkConcurrencynumberfalseWhen using yarn or bun as client, limit simultaneous installs to this number.
customImportsArray<string>nullBy default, the default export is used for calculating sizes. Setting this option allows calculation of package stats based on more granular top-level exports.
minifierterser or esbuildterserESbuild is faster, albeit with marginally larger file sizes
installTimeoutnumber (ms)30000Timeout for package install

Listening to events

package-build-stats emits various lifecycle events when building a package. You can listen to these events by subscribing to the event emitter (based on mitt).

import { eventQueue } from 'package-build-stats'

// Listen to all events
eventQueue.on('*', callback)

// Listen to specific events
eventQueue.on('TASK_PACKAGE_BUILD', callback)

For a list of all events, see this.

Contributing

See contributing guide.