rollup-plugin-web-worker-loader
Rollup plugin to handle Web Workers.
Can inline the worker code or emit a script file using code-splitting.
Handles Worker dependencies and can emit source maps.
Worker dependencies are added to Rollup's watch list.
Supports bundling workers for Node.js environments
Getting started
yarn add rollup-plugin-web-worker-loader --dev
Add the plugin to your rollup configuration:
import webWorkerLoader from 'rollup-plugin-web-worker-loader';
export default {
entry: 'src/index.js',
plugins: [
webWorkerLoader(),
],
format: 'esm',
};
Bundle the worker code using the RegEx pattern specified in the plugin's configuration.
By default you can add the prefix web-worker:
to your imports:
import DataWorker from 'web-worker:./DataWorker';
const dataWorker = new DataWorker();
dataWorker.postMessage('Hello World!');
Configuration
The plugin responds to the following configuration options:
webWorkerLoader({
targetPlatform?: string,
pattern?: RegEx,
extensions?: string[],
sourcemap?: boolean,
inline?: boolean,
forceInline?: boolean,
external?: string[],
preserveSource?: boolean,
enableUnicodeSupport?: boolean,
outputFolder?: string,
loadPath?: string,
skipPlugins?: Array
})
TypeScript
An example project that uses this plugin with TypeScript can be found here
Notes
WARNING: To use code-splitting for the worker scripts, Rollup v1.9.2 or higher is required. See https://github.com/rollup/rollup/issues/2801 for more details.
The sourcemap
configuration option is ignored when inline
is set to false
, in that case the project's sourcemap configuration is inherited.
loadPath
is meant to be used in situations where code-splitting is used (inline = false
) and the entry script is hosted in a different folder than the worker code.
Roadmap