You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Workers are JavaScript’s version of threads. Workers are important to use as the main thread is already overloaded, especially on slower or older devices.
To avoid having to make new releases of this plugin with every release of Comlink or my OMT plugin, both of these modules have been declared as peer dependencies. This means you will have to explicitely add them to your dependency list:
// rollup.config.jsimportcomlinkfrom"@surma/rollup-plugin-comlink";importomtfrom"@surma/rollup-plugin-off-main-thread";exportdefault{input: ["src/main.js"],output: {dir: "dist",// You _must_ use either “amd” or “esm” as your format.// But note that only very few browsers have native support for// modules in workers.format: "amd",},plugins: [comlink(),omt()],};
Example
// worker.jsexportfunctiondoMath(a,b){returna+b;}
Note: Importing individual exports currently does not work. comlink: modules only have one default export.
marker: A string that is used as a prefix to mark a worker import. Default is comlink.
useModuleWorkers: Use module workers (requires {format: "esm"}).
TypeScript
TypeScript can be taught to handle these pseudo-imports correctly and forward the types appropriately.
// main.tsimportworkerAPIfrom"comlink:./worker.js";console.log(awaitworkerAPI.sayHello("surma"));// This would fail to compile:// console.log(await workerAPI.doesNotExit("surma"));
// worker-modules.d.tsdeclare module "comlink:./worker.js"{// Do *not* move this to a top-level import, as it will turn this// .d.ts file from an ambient module into a local module.constwrap: import("comlink").Remote<typeofimport("./worker.js")>;exportdefaultwrap;}