node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »



A quick and dirty way of running Web Workers within a single browserified bundle.

Intended as a solution that works now, avoiding any significant tradeoffs (e.g. duplicate scripts). Here's hoping it gets rendered obsolete by workerify if/when Browserify's transform API gets a little bit more flexible.


npm install worker-pack


Firstly, though worker-pack is intended for Browserify v2 it isn't packaged as a transform stream. Instead, you just have to pipe Browserify's output through the worker-pack CLI:

# Instead of this:
browserify index.js > bundle.js
# Do this:
browserify index.js | node_modules/.bin/worker-pack > bundle.js

Now you should be able to require('worker-pack') from index.js:

var pack = require('worker-pack')
if (pack.isWorker()) {
  self.onmessage = function() { self.postMessage('beep boop') }
} else {
  var worker = pack.createWorker()
  worker.onmessage = function(e) { console.log( }

If you want to use the workerstream module, you can just get a Worker URL and pass that to the stream:

var workerstream = require('workerstream')
  , pack = require('worker-pack')
if (!pack.isWorker()) {
  var worker = workerstream(pack.createWorkerURL())