threads-loader
v1.0.3
Published
threads worker loader module for webpack
Downloads
3
Readme
threads-loader
threads worker loader module for webpack
Requirements
This module requires a minimum of Node v6.9.0 and Webpack v4.0.0.
** MUST USE THE @jc-lab/threads PACKAGE**
Getting Started
To begin, you'll need to install threads-loader
:
$ npm install threads-loader --save-dev
Inlined
// App.js
import Worker from 'threads-loader!./Worker.js';
const worker = new Worker();
OR
const worker = (() => {
if(typeof __webpack_require__ === 'function') {
return require('threads-loader!./Worker.js')();
}else{
return new Worker('./Worker.js');
}
})();
Config
// webpack.config.js
{
module: {
rules: [
{
test: /\.thread\.js$/,
use: { loader: 'threads-loader' }
},
{
test: /\.thread\.ts$/,
use: [
{ loader: 'ts-loader' },
{ loader: 'threads-loader' }
]
}
]
}
}
// App.js
import { spawn, Worker } from '@jc-lab/threads';
import MyWorker from 'threads-loader!./Worker.js';
const instance = await spawn((() => {
if(typeof __webpack_require__ === 'function') {
return new MyWorker();
}else{
return new Worker('./Worker.js');
}
})());
...
And run webpack
via your preferred method.
Options
name
Type: String
Default: [hash].thread.js
To set a custom name for the output script, use the name
parameter. The name
may contain the string [hash]
, which will be replaced with a content dependent
hash for caching purposes. When using name
alone [hash]
is omitted.
// webpack.config.js
{
loader: 'threads-loader',
options: { name: 'WorkerName.[hash].js' }
}
publicPath
Type: String
Default: null
Overrides the path from which worker scripts are downloaded. If not specified, the same public path used for other webpack assets is used.
// webpack.config.js
{
loader: 'threads-loader',
options: { publicPath: '/scripts/workers/' }
}
inline
Type: boolean
Default: false
You can also inline the worker as a BLOB with the inline parameter.
(If you are in a node environment, the eval option of worker_threads is used)
// webpack.config.js
{
loader: 'threads-loader',
options: { inline: true }
}
OR
require('threads-loader?inline=true!./Worker.js');
Integrating with TypeScript
To integrate with TypeScript, you will need to define a custom module for the exports of your worker
// typings/custom.d.ts
declare module "threads-loader!*" {
import WebpackThreadsWorker from 'threads-loader/types'
export default WebpackThreadsWorker;
}
License
MIT
Thanks for worker-loader
threads-loader is built on the code of worker-loader.