🏗️ Automatically move a module into a Web Worker (Webpack loader)
Latest commit 3077834 Jan 14, 2018 @developit developit hopefully fix CI
Failed to load latest commit information.
src Initial commit! Jan 9, 2018
test Initial commit! Jan 9, 2018
.editorconfig Initial commit! Jan 9, 2018
.gitignore Initial commit! Jan 9, 2018
.travis.yml hopefully fix CI Jan 14, 2018
LICENSE.md Create LICENSE.md Jan 10, 2018
README.md Add credit! Jan 13, 2018
package.json chore(package): update microbundle to version 0.3.0 Jan 13, 2018



workerize-loader npm travis

A webpack loader that moves a module and its dependencies into a Web Worker, automatically reflecting exported functions as asynchronous proxies.

  • Bundles a tiny, purpose-built RPC implementation into your app
  • If exported module methods are already async, signature is unchanged
  • Supports synchronous and asynchronous worker functions
  • Works beautifully with async/await
  • Imported value is instantiable, just a decorated Worker


npm install -D workerize-loader



// block for `time` ms, then return the number of loops we could run in that time:
export function expensive(time) {
	let start = Date.now(),
		count = 0
	while (Date.now() - start < time) count++
	return count

index.js: (our demo)

import worker from 'workerize-loader!./worker'

let instance = worker()  // `new` is optional

instance.expensive(1000).then( count => {
	console.log(`Ran ${count} loops`)


The inner workings here are heavily inspired by worker-loader. It's worth a read!


MIT License © Jason Miller