Vite Plugin
The vite plugin is used to compile the worker modules into separate files that can be utilized in your project.
Usage
The plugin needs to be added to the vite.config.js
or vite.config.ts
file.
import { defineConfig } from "vite";
import { simpleWorkerPlugin } from "simple-worker-vite/plugin";
export default defineConfig({
plugins: [
simpleWorkerPlugin({
// ...
}),
],
});
TIP
It will not just bundle the worker module into one file (if they are importing other modules), but will also transpile the worker from TypeScript to JavaScript (if needed).
After building the project the worker files will be in the dist/workers/
directory (by default).
dist
├── index.html
├── assets
│ └── index.1234.js
├── workers
│ ├── my-worker-name.worker.js
│ └── yet-another-worker.worker.js
Options
The simpleWorkerPlugin
function takes an options object with the following properties:
publicPath
The (optional) publicPath
option is used to specify the path where the worker files will be located when they are built.
INFO
By default it is set to "workers/"
which means the worker files will be located in the dist/workers/
directory.
simpleWorkerPlugin({
publicPath: "custom-path/",
// ...
}),
WARNING
Please note that if you change the publicPath
option you will also need to change the base
of the WorkerStore
if you are using it.
minify
The (optional) minify
option is used to specify if the worker files should be minified or not.
INFO
By default it is set to true
which means the worker files will be minified.
simpleWorkerPlugin({
minify: false,
// ...
}),
workers
The mandatory workers
option is used to specify the workers that should be compiled.
They always contain a name
and a srcPath
property.
INFO
The name
property is used to specify the name of the worker. This is used as the identifier when spawning a worker using the WorkerStore
.
simpleWorkerPlugin({
workers: [
{
name: "my-worker-name",
srcPath: "src/workers/my-worker-name.worker.ts",
},
{
name: "yet-another-worker",
srcPath: "src/workers/yet-another-worker.worker.ts",
},
],
// ...
}),
Utilities
The plugin also exports some utilities.
workersFromDir
The workersFromDir
function can be used to automatically extract the workers from a directory.
import { defineConfig } from "vite";
import { simpleWorkerPlugin, workersFromDir } from "simple-worker-vite/plugin";
export default defineConfig({
plugins: [
simpleWorkerPlugin({
workers: workersFromDir("src/workers/"),
// ...
}),
],
});
INFO
It will search the directory for any files ending in .worker.ts
or .worker.js
and use their name as the name
property.
workerFromFile
The workerFromFile
function works in a similar way and uses the file name as the name
property.
import { defineConfig } from "vite";
import { simpleWorkerPlugin, workerFromFile } from "simple-worker-vite/plugin";
export default defineConfig({
plugins: [
simpleWorkerPlugin({
workers: [
workerFromFile("src/workers/my-worker-name.worker.ts"),
workerFromFile("src/workers/yet-another-worker.worker.ts"),
],
// ...
}),
],
});
INFO
This gives you more control what files are used as workers. It will also work with files that do not end in .worker.ts
or .worker.js
.