JSPM

  • Created
  • Published
  • Downloads 270
  • Score
    100M100P100Q91795F
  • License MIT

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (package-build-stats) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

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

    Usage

    const { getPackageStats } = require('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
    Option Values Default Description
    client npm, yarn, pnpm, or bun npm Which client to use to install package for building. Bun is 13x faster!
    limitConcurrency true or false false When using yarn as the client, use the network mutex to limit concurrency
    networkConcurrency number false When using yarn or bun 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

    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.