Union bundle
npm install bare-union-bundleUnion bundle
```
npm install bare-union-bundle
` js
const UnionBundle = require('bare-union-bundle')
const b = UnionBundle.require('./0.bundle', './1.bundle', './2.bundle')
const layer = b.add(new URL('file://root-of-project'), 'entrypoint.js')
// store as 3.bundle or whatever
// load entrypoint.js from bundle 1, union back to root
const mod1 = b.load(new URL('file://root-of-project'), 'entrypoint.js', 1)
// load entrypoint.js from bundle 2, union back to root
const mod2 = b.load(new URL('file://root-of-project'), 'entrypoint.js', 2)
`
#### const b = new UnionBundle(bundles)
Create a union of the bundles, an array of Bundles.
#### const b = UnionBundle.require(files)
Shortcut for creating a UnionBundle from file paths (files) automatically reading them as Bundles.
#### const layer = await b.add(root, entrypoint, opts = {})
Create a new layer bundle for an entrypoint skipping modules referenced in the existing bundles in the UnionBundle. root is a URL for the root of the entrypoint, aka it contains the node_modules directory where dependencies are installed.
opts includes:
`node_modules
{
skipModules: true // skip bundling dependencies in in root`
}
A layer bundle can be loaded by creating the union with the previous layer bundles via the UnionBundle constructor and loading via the union's load(). For example:
`js
// Creating
const b = UnionBundle.require('./0.bundle', './1.bundle', './2.bundle')
const layer = b.add(new URL('file://root-of-project'), 'entrypoint.js')
await fs.writeFile('./3.bundle', layer.toBuffer())
// Loading
const b = UnionBundle.require('./0.bundle', './1.bundle', './2.bundle', './3.bundle')
const mod = b.load(new URL('file://root-of-project'), 'entrypoint.js')
`
#### const bundle = b.checkout(index)
Create a Bundle resolving all dependencies at the provided index.
Example:
`1.bundle
const past = UnionBundle.require('./0.bundle', './1.bundle', './2.bundle')
const mod1 = past.checkout(1) // returns a resolved bundle combining & 0.bundle`
#### const mod = b.load(root, entrypoint, index, opts = {})
Load entrypoint (relative to root) from the bundle at the provided checkout index.
opts includes:
`node_modules
{
cache: require.cache, // the module cache to load the entrypoint with
skipModules: true // skip loading dependencies from in bundle if they are in the cache``
}
Apache-2.0