Files
gt-agent-company/.agents/skills/vite/references/features-workers.md
sexygoat 3c62cc1cd1 first
2026-03-31 18:41:52 +08:00

1.8 KiB

name, description
name description
features-workers Web Worker support in Vite

Web Workers

Standard Web Worker creation:

const worker = new Worker(new URL('./worker.js', import.meta.url))

Module worker:

const worker = new Worker(new URL('./worker.js', import.meta.url), {
  type: 'module'
})

Shared Worker:

const sharedWorker = new SharedWorker(
  new URL('./shared-worker.js', import.meta.url)
)

Note: The new URL() must be used directly inside new Worker() for detection.

Query Suffix Syntax

Import with ?worker suffix:

import MyWorker from './worker?worker'

const worker = new MyWorker()

Shared worker:

import MySharedWorker from './worker?sharedworker'

const worker = new MySharedWorker()

Inline Worker

Inline as base64 string (no separate chunk):

import MyWorker from './worker?worker&inline'

const worker = new MyWorker()

Worker URL Only

Get URL instead of constructor:

import workerUrl from './worker?worker&url'

Worker Script

Workers can use ESM import statements:

// worker.js
import { heavyComputation } from './utils'

self.onmessage = (e) => {
  const result = heavyComputation(e.data)
  self.postMessage(result)
}

Worker Options

Configure worker bundling:

// vite.config.ts
export default defineConfig({
  worker: {
    format: 'es',  // or 'iife'
    plugins: () => [/* worker-specific plugins */],
    rollupOptions: {
      // Rollup options for worker bundle
    }
  }
})

WebAssembly in Workers

// worker.js
import init from './module.wasm?init'

init().then((instance) => {
  instance.exports.compute()
})