This is the function that powers the core of building, minifying and gzipping of packages in bundlephobia.
const { getPackageStats } = require('package-build-stats')
const results = await getPackageStats('moment')
const results = await getPackageStats('[email protected]')
const results = await getPackageStats('~/dev/my-npm-package') // must have a package.json
const results = await getBuiltPackageStats('moment', options)
Option | Values | Default | Description |
---|---|---|---|
client | npm or yarn |
npm |
Which client to use to install package for building |
limitConcurrency | true or false |
false |
When using yarn as the client, use the network mutex to limit concurrency |
networkConcurrency | number |
false |
When using yarn as client, limit simultaneous installs to this number. |
customImports | Array<string> |
null |
By default, the default export is used for calculating sizes. Setting this option allows calculation of package stats based on more granular top-level exports. |
minifier | terser or esbuild |
terser |
ESbuild is faster, albeit with marginally larger file sizes |
installTimeout | number (ms) | 30000 | Timeout for package install |
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.