I wonder if it's actually possible to handle Web Worker "standard syntax" in webpack (e.g var worker = new Worker('my-worker-file.js');
) and how?
I know about worker-loader but as far as I understand it needs a specific syntax and is not compatible with the standard one.
In other words, is it possible to bundle that file with webpack without changing the code? -> https://github.com/mdn/simple-web-worker/blob/gh-pages/main.js#L8
With browserify, I would use workerify transform, but I can't find anything in webpack's world.
You can configure Webpack to pack your worker js file into a separate bundle. In webpack.config.js
:
{ entry: { bundle: './app/main.js', worker: './app/my-worker-file.js' }, output: { filename: '[name].js' } ... }
This way you get two bundles: bundle.js
with your main application and worker.js
with the worker entrypoint. Then, inside your main bundle, you can do new Worker('worker.js')
worker-loader
basically does the same. Whenever something is loaded through it, it creates a separate bundle entry, so to speak, which is automatically named [hash].worker.js
. It then stores this file name into the function that is returned from require('worker!...')
, which just passes it to new Worker
. At the end, it's exactly the same process as I've described above with the only difference that the name of the bundle is managed automatically for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With