0.2.1 • Published 5 years ago

rollup-plugin-workz0r v0.2.1

Weekly downloads
1
License
Apache-2.0
Repository
github
Last release
5 years ago

rollup-plugin-workz0r

An ill-named rollup plugin to add worker bundling support. With this plugin you can just use the new Worker("somefile.js") constructor and rollup will bundle that file and its dependencies into a separate chunk — similar to what happens with a dynamic import.

$ npm install --save rollup-plugin-workz0r

Note: If you are a webpack user, take a look at worker-loader.

Usage

// rollup.config.js
import workz0r from "rollup-plugin-workz0r";

export default {
  input: "src/main.js",
  plugins: [workz0r()]
};

The modules-in-workers problems

At the time of writing, no browser has support for ES6 modules in workers. Until browsers have caught up, I wrote rollup-plugin-loadz0r to make modules in workers “just work”. If you want to use these two plugins in conjunction, some extra plumbing is needed to let loadz0r know which chunks are worker chunks, as they need the loader code, too:

// rollup.config.js
import loadz0r from "rollup-plugin-loadz0r";
import workz0r from "rollup-plugin-workz0r";

const workerModules = new Set();
export default {
  input: "input.js",
  output: {
    dir: "./dist",
    format: "amd"
  },
  plugins: [
    workz0r({
      onWorkerModule: id => workerModules.add(id)
    }),
    loadz0r({
      // `prependLoader` will be called for every chunk. If it returns `true`,
      // the loader code will be prepended.
      prependLoader: (chunk, inputs) => {
        // If the chunk contains one of the worker modules, prepend a loader.
        if (Object.keys(chunk.modules).some(mod => workerModules.has(mod))) {
          return true;
        }
        // If not, fall back to the default behavior.
        return loadz0r.isEntryModule(chunk, inputs);
      }
    })
  ]
};

License Apache-2.0

0.2.1

5 years ago

0.2.0

5 years ago