brrp

ESM bundle npm modules for browsers and nodejs

Usage no npm install needed!

<script type="module">
  import brrp from 'https://cdn.skypack.dev/brrp';
</script>

README

brrp

Creates ESM bundles of npm packages for use in the browser or Node.js.

Usage

CLI

$ brrp -x lodash.merge > lodash-merge.bundle.js

This will do a fresh install of the npm module lodash.merge in temporary directory and then create a bundle of the module.

If you have the target module already installed in your local npm project you can avoid running any npm install locally by omitting the -x property.

$ brrp lodash.merge > lodash-merge.bundle.js

As a module.

You can import brrp into Node.js for use in your own tooling.

import { install, browserBundle } from 'brrp'

const { input } = await install('lodash.merge')
const stream = browserBundle({input})

for await (const chunk of stream) {
  process.stdout.write(chunk)
}

Inject Node.js polyfills

By default we don't bundle in any Node.js polyfills. You can include them by using the -p or --node-polyfills option.

$ brrp -x -p base-x

Or, if you're using brrp as a module.

import { install, browserBundle } from 'brrp'

const { input } = await install('lodash.merge')
const nodePolyfills = true
const stream = browserBundle({input, nodePolyfills})

for await (const chunk of stream) {
  process.stdout.write(chunk)
}

Minification

$ brrp -x -m bent

Or, if you're using brrp as a module.

import { install, browserBundle } from 'brrp'

const { input } = await install('bent')
const minify = true
const stream = browserBundle({input, minify})

for await (const chunk of stream) {
  process.stdout.write(chunk)
}

We use terser under the hood for optimal compression targetted at ES6+.