A rollup plugin that spawns rollup, emitting the output back into the main bundle.
$ npm i -D rollup-plugin-fork
Regular expression or picomatch pattern that includes files. Nothing is included by default.
Regular expression or picomatch pattern that excludes files. Nothing is excluded by default.
inputOptions InputOptions | (options: InputOptions) => InputOptions
Input options to be used when spawning rollup. By default, the plugin will
inherit all options from the main bundle except for input. You can
specify an options object to be spread into the inherited options, or a
transform function receiving the inherited options and returning their
replacement.
If a transform function is specified, it will be invoked for each module
included by the plugin and will receive options where input is the absolute
module path. This can be used to drive transform logic, but note that
modifying or deleting input will result in an error.
outputOptions OutputOptions | (options: OutputOptions) => OutputOptions
Output options to be used when spawning rollup. By default, the plugin will
inherit all options from the main bundle except for dir and file. You
can specify an options object to be spread into the inherited options, or a
transform function receiving the inherited options and returning their
replacement.
If you specify dir, it will be relative to the dir of the main output.
The following example outputs an ES bundle with an IIFE web worker asset.
format is overridden while entryFileNames is inherited to give the worker a
hashed file name.
main.js
import workerUrl from './worker.js'
new Worker(workerUrl).onmessage = ({ data }) => document.body.append(data)
worker.js
import hello from './helper.js'
postMessage(hello)
helper.js
export default '👋'
rollup.config.js
import fork from 'rollup-plugin-fork'
export default {
input: 'main.js',
output: {
entryFileNames: '[name]-[hash].js'
format: 'es'
},
plugins: [
fork({
include: /worker\.js$/,
outputOptions: {
format: 'iife'
}
})
]
}
output:
$ npx rollup -c
main.js → stdout...
//→ main-78fc96ad.js:
var workerUrl = new URL('worker-0f27d5dd.js', import.meta.url).href;
new Worker(workerUrl).onmessage = ({ data }) => document.body.append(data);
//→ worker-0f27d5dd.js:
(function () {
'use strict';
var hello = '👋';
postMessage(hello);
}());
This package is available as open source under the terms of the MIT License.