From 1084b76c7b5c3af5fa011f9461f55a759b1097a2 Mon Sep 17 00:00:00 2001
From: yoho
Date: Tue, 26 Apr 2022 22:13:17 +0800
Subject: [PATCH 1/6] feat: worker support query url
---
.../worker/__tests__/es/es-worker.spec.ts | 8 +++-
.../worker/__tests__/iife/worker.spec.ts | 8 +++-
.../sourcemap-hidden-worker.spec.ts | 2 +-
.../sourcemap-inline-worker.spec.ts | 2 +-
.../sourcemap/sourcemap-worker.spec.ts | 2 +-
packages/playground/worker/index.html | 6 +++
packages/playground/worker/simple-worker.js | 1 +
packages/playground/worker/worker/main-url.js | 11 +++++
packages/playground/worker/worker/main.js | 1 +
packages/vite/src/node/plugins/worker.ts | 45 ++++++++++++++++---
.../src/node/plugins/workerImportMetaUrl.ts | 39 ++--------------
11 files changed, 79 insertions(+), 46 deletions(-)
create mode 100644 packages/playground/worker/simple-worker.js
create mode 100644 packages/playground/worker/worker/main-url.js
diff --git a/packages/playground/worker/__tests__/es/es-worker.spec.ts b/packages/playground/worker/__tests__/es/es-worker.spec.ts
index a815596721c268..040431a4553014 100644
--- a/packages/playground/worker/__tests__/es/es-worker.spec.ts
+++ b/packages/playground/worker/__tests__/es/es-worker.spec.ts
@@ -60,7 +60,7 @@ if (isBuild) {
// assert correct files
test('inlined code generation', async () => {
const files = fs.readdirSync(assetsDir)
- expect(files.length).toBe(21)
+ expect(files.length).toBe(23)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const worker = files.find((f) => f.includes('my-worker'))
@@ -100,3 +100,9 @@ test('emit chunk', async () => {
'"A string/es/"'
)
})
+
+test('url query worker', async () => {
+ expect(await page.textContent('.simple-worker-url')).toMatch(
+ 'Hello from simple worker!'
+ )
+})
diff --git a/packages/playground/worker/__tests__/iife/worker.spec.ts b/packages/playground/worker/__tests__/iife/worker.spec.ts
index 9be78d57edd702..6f8ecf49025aec 100644
--- a/packages/playground/worker/__tests__/iife/worker.spec.ts
+++ b/packages/playground/worker/__tests__/iife/worker.spec.ts
@@ -63,7 +63,7 @@ if (isBuild) {
// assert correct files
test('inlined code generation', async () => {
const files = fs.readdirSync(assetsDir)
- expect(files.length).toBe(12)
+ expect(files.length).toBe(14)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const worker = files.find((f) => f.includes('my-worker'))
@@ -94,3 +94,9 @@ test('classic worker', async () => {
expect(await page.textContent('.classic-worker')).toMatch('A classic')
expect(await page.textContent('.classic-shared-worker')).toMatch('A classic')
})
+
+test('url query worker', async () => {
+ expect(await page.textContent('.simple-worker-url')).toMatch(
+ 'Hello from simple worker!'
+ )
+})
diff --git a/packages/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts b/packages/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts
index 1797ac5269e411..34a3320f646587 100644
--- a/packages/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts
+++ b/packages/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts
@@ -9,7 +9,7 @@ if (isBuild) {
test('sourcemap generation for web workers', async () => {
const files = fs.readdirSync(assetsDir)
// should have 2 worker chunk
- expect(files.length).toBe(24)
+ expect(files.length).toBe(28)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const indexSourcemap = getSourceMapUrl(content)
diff --git a/packages/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts b/packages/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts
index 89af0878213ab9..8760e1f5d27ffc 100644
--- a/packages/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts
+++ b/packages/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts
@@ -9,7 +9,7 @@ if (isBuild) {
test('sourcemap generation for web workers', async () => {
const files = fs.readdirSync(assetsDir)
// should have 2 worker chunk
- expect(files.length).toBe(12)
+ expect(files.length).toBe(14)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const indexSourcemap = getSourceMapUrl(content)
diff --git a/packages/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts b/packages/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts
index 24af73d5e3edfa..44098a5a14a585 100644
--- a/packages/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts
+++ b/packages/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts
@@ -9,7 +9,7 @@ if (isBuild) {
test('sourcemap generation for web workers', async () => {
const files = fs.readdirSync(assetsDir)
// should have 2 worker chunk
- expect(files.length).toBe(24)
+ expect(files.length).toBe(28)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const indexSourcemap = getSourceMapUrl(content)
diff --git a/packages/playground/worker/index.html b/packages/playground/worker/index.html
index 602aa3d06bfcac..f43a9e8a99e75e 100644
--- a/packages/playground/worker/index.html
+++ b/packages/playground/worker/index.html
@@ -58,6 +58,12 @@
+
+ new Worker(new URL('../simple-worker.js', import.meta.url).href)
+ .simple-worker-url
+
+
+
diff --git a/packages/playground/worker/simple-worker.js b/packages/playground/worker/simple-worker.js
new file mode 100644
index 00000000000000..3b7e9a75fd8c5f
--- /dev/null
+++ b/packages/playground/worker/simple-worker.js
@@ -0,0 +1 @@
+self.postMessage('Hello from simple worker!')
diff --git a/packages/playground/worker/worker/main-url.js b/packages/playground/worker/worker/main-url.js
new file mode 100644
index 00000000000000..ba395926009754
--- /dev/null
+++ b/packages/playground/worker/worker/main-url.js
@@ -0,0 +1,11 @@
+import workerUrl from '../simple-worker?worker&url'
+
+function text(el, text) {
+ document.querySelector(el).textContent = text
+}
+
+const worker = new Worker(workerUrl, { type: 'classic' })
+
+worker.addEventListener('message', (ev) => {
+ text('.simple-worker-url', JSON.stringify(ev.data))
+})
diff --git a/packages/playground/worker/worker/main.js b/packages/playground/worker/worker/main.js
index 953b5ef1bf3b53..ce434c38e79ce6 100644
--- a/packages/playground/worker/worker/main.js
+++ b/packages/playground/worker/worker/main.js
@@ -1,3 +1,4 @@
/* flag: will replace in vite config import("./format-es.js") */
import('./main-module')
import('./main-classic')
+import('./main-url')
diff --git a/packages/vite/src/node/plugins/worker.ts b/packages/vite/src/node/plugins/worker.ts
index 4113b7153f9b35..474a3c51b499ca 100644
--- a/packages/vite/src/node/plugins/worker.ts
+++ b/packages/vite/src/node/plugins/worker.ts
@@ -3,10 +3,11 @@ import type { Plugin } from '../plugin'
import { fileToUrl, getAssetHash } from './asset'
import { cleanUrl, injectQuery, parseRequest } from '../utils'
import type Rollup from 'rollup'
-import { ENV_PUBLIC_PATH } from '../constants'
+import { ENV_ENTRY, ENV_PUBLIC_PATH } from '../constants'
import path from 'path'
import { onRollupWarning } from '../build'
import type { TransformPluginContext, EmittedFile } from 'rollup'
+import type { ViteDevServer } from '../server'
interface WorkerCache {
// save worker bundle emitted files avoid overwrites the same file.
@@ -23,7 +24,9 @@ interface WorkerCache {
emitted: Map
}
-const WorkerFileId = 'worker_file'
+export type WorkerType = 'classic' | 'module' | 'ignore'
+
+export const WorkerFileId = 'worker_file'
const workerCache = new WeakMap()
function emitWorkerFile(
@@ -195,10 +198,15 @@ export async function workerFileToUrl(
export function webWorkerPlugin(config: ResolvedConfig): Plugin {
const isBuild = config.command === 'build'
const isWorker = config.isWorker
+ let server: ViteDevServer
return {
name: 'vite:worker',
+ configureServer(_server) {
+ server = _server
+ },
+
buildStart() {
workerCache.set(config, {
assets: new Map(),
@@ -220,11 +228,30 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin {
}
},
- async transform(_, id) {
+ async transform(raw, id) {
const query = parseRequest(id)
- if (query && query[WorkerFileId] != null) {
+ if (query && query[WorkerFileId] != null && query['type'] != null) {
+ const workerType = query['type'] as WorkerType
+ let injectEnv = ''
+
+ if (workerType === 'classic') {
+ injectEnv = `importScripts('${ENV_PUBLIC_PATH}')\n`
+ } else if (workerType === 'module') {
+ injectEnv = `import '${ENV_PUBLIC_PATH}'\n`
+ } else if (workerType === 'ignore') {
+ if (isBuild) {
+ injectEnv = ''
+ } else if (server) {
+ // dynamic worker type we can't know how import the env
+ // so we copy /@vite/env code of server transform result into file header
+ const { moduleGraph } = server
+ const module = moduleGraph.getModuleById(ENV_ENTRY)
+ injectEnv = module?.transformResult?.code || ''
+ }
+ }
+
return {
- code: `import '${ENV_PUBLIC_PATH}'\n` + _
+ code: injectEnv + raw
}
}
if (
@@ -233,6 +260,7 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin {
) {
return
}
+ const isUrl = query.url != null
let url: string
if (isBuild) {
@@ -264,6 +292,13 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin {
url = injectQuery(url, WorkerFileId)
}
+ if (isUrl) {
+ return {
+ code: `export default ${JSON.stringify(url)}`,
+ map: { mappings: '' } // Empty sourcemap to supress Rolup warning
+ }
+ }
+
const workerConstructor =
query.sharedworker != null ? 'SharedWorker' : 'Worker'
const workerOptions = { type: 'module' }
diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts
index 3d8970b746349c..1f7764ce5c057a 100644
--- a/packages/vite/src/node/plugins/workerImportMetaUrl.ts
+++ b/packages/vite/src/node/plugins/workerImportMetaUrl.ts
@@ -4,19 +4,15 @@ import type { Plugin } from '../plugin'
import { fileToUrl } from './asset'
import { cleanUrl, injectQuery } from '../utils'
import path from 'path'
-import { workerFileToUrl } from './worker'
+import type { WorkerType } from './worker'
+import { workerFileToUrl, WorkerFileId } from './worker'
import { parseRequest } from '../utils'
-import { ENV_ENTRY, ENV_PUBLIC_PATH } from '../constants'
import MagicString from 'magic-string'
-import type { ViteDevServer } from '..'
import type { RollupError } from 'rollup'
import { emptyString } from '../cleanString'
-type WorkerType = 'classic' | 'module' | 'ignore'
const ignoreFlagRE = /\/\*\s*@vite-ignore\s*\*\//
-const WORKER_FILE_ID = 'worker_url_file'
-
function getWorkerType(raw: string, clean: string, i: number): WorkerType {
function err(e: string, pos: number) {
const error = new Error(e) as RollupError
@@ -69,41 +65,12 @@ function getWorkerType(raw: string, clean: string, i: number): WorkerType {
export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin {
const isBuild = config.command === 'build'
- let server: ViteDevServer
return {
name: 'vite:worker-import-meta-url',
- configureServer(_server) {
- server = _server
- },
-
async transform(code, id, options) {
const query = parseRequest(id)
- if (query && query[WORKER_FILE_ID] != null && query['type'] != null) {
- const workerType = query['type'] as WorkerType
- let injectEnv = ''
-
- if (workerType === 'classic') {
- injectEnv = `importScripts('${ENV_PUBLIC_PATH}')\n`
- } else if (workerType === 'module') {
- injectEnv = `import '${ENV_PUBLIC_PATH}'\n`
- } else if (workerType === 'ignore') {
- if (isBuild) {
- injectEnv = ''
- } else if (server) {
- // dynamic worker type we can't know how import the env
- // so we copy /@vite/env code of server transform result into file header
- const { moduleGraph } = server
- const module = moduleGraph.getModuleById(ENV_ENTRY)
- injectEnv = module?.transformResult?.code || ''
- }
- }
-
- return {
- code: injectEnv + code
- }
- }
let s: MagicString | undefined
if (
(code.includes('new Worker') || code.includes('new SharedWorker')) &&
@@ -150,7 +117,7 @@ export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin {
url = await workerFileToUrl(this, config, file, query)
} else {
url = await fileToUrl(cleanUrl(file), config, this)
- url = injectQuery(url, WORKER_FILE_ID)
+ url = injectQuery(url, WorkerFileId)
url = injectQuery(url, `type=${workerType}`)
}
s.overwrite(urlIndex, urlIndex + exp.length, JSON.stringify(url), {
From 2584d5f698d1538352d764ae752e88721bc8a71d Mon Sep 17 00:00:00 2001
From: yoho
Date: Wed, 27 Apr 2022 21:30:05 +0800
Subject: [PATCH 2/6] chore: clean code
---
packages/vite/src/node/plugins/worker.ts | 13 ++++++-------
.../vite/src/node/plugins/workerImportMetaUrl.ts | 4 ++--
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/packages/vite/src/node/plugins/worker.ts b/packages/vite/src/node/plugins/worker.ts
index 474a3c51b499ca..3f639870c0abde 100644
--- a/packages/vite/src/node/plugins/worker.ts
+++ b/packages/vite/src/node/plugins/worker.ts
@@ -26,7 +26,7 @@ interface WorkerCache {
export type WorkerType = 'classic' | 'module' | 'ignore'
-export const WorkerFileId = 'worker_file'
+export const WORKER_FILE_ID = 'worker_file'
const workerCache = new WeakMap()
function emitWorkerFile(
@@ -230,7 +230,7 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin {
async transform(raw, id) {
const query = parseRequest(id)
- if (query && query[WorkerFileId] != null && query['type'] != null) {
+ if (query && query[WORKER_FILE_ID] != null && query['type'] != null) {
const workerType = query['type'] as WorkerType
let injectEnv = ''
@@ -260,7 +260,6 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin {
) {
return
}
- const isUrl = query.url != null
let url: string
if (isBuild) {
@@ -289,13 +288,13 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin {
}
} else {
url = await fileToUrl(cleanUrl(id), config, this)
- url = injectQuery(url, WorkerFileId)
+ url = injectQuery(url, WORKER_FILE_ID)
}
- if (isUrl) {
+ if (query.url != null) {
return {
code: `export default ${JSON.stringify(url)}`,
- map: { mappings: '' } // Empty sourcemap to supress Rolup warning
+ map: { mappings: '' } // Empty sourcemap to suppress Rollup warning
}
}
@@ -309,7 +308,7 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin {
url
)}, ${JSON.stringify(workerOptions, null, 2)})
}`,
- map: { mappings: '' } // Empty sourcemap to supress Rolup warning
+ map: { mappings: '' } // Empty sourcemap to suppress Rollup warning
}
},
diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts
index 1f7764ce5c057a..a10b7440872e1a 100644
--- a/packages/vite/src/node/plugins/workerImportMetaUrl.ts
+++ b/packages/vite/src/node/plugins/workerImportMetaUrl.ts
@@ -5,7 +5,7 @@ import { fileToUrl } from './asset'
import { cleanUrl, injectQuery } from '../utils'
import path from 'path'
import type { WorkerType } from './worker'
-import { workerFileToUrl, WorkerFileId } from './worker'
+import { workerFileToUrl, WORKER_FILE_ID } from './worker'
import { parseRequest } from '../utils'
import MagicString from 'magic-string'
import type { RollupError } from 'rollup'
@@ -117,7 +117,7 @@ export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin {
url = await workerFileToUrl(this, config, file, query)
} else {
url = await fileToUrl(cleanUrl(file), config, this)
- url = injectQuery(url, WorkerFileId)
+ url = injectQuery(url, WORKER_FILE_ID)
url = injectQuery(url, `type=${workerType}`)
}
s.overwrite(urlIndex, urlIndex + exp.length, JSON.stringify(url), {
From 09bc12ed459b9d34018cdb96750452a3477443f1 Mon Sep 17 00:00:00 2001
From: yoho
Date: Wed, 27 Apr 2022 21:37:07 +0800
Subject: [PATCH 3/6] fix: file nums
---
packages/playground/worker/__tests__/es/es-worker.spec.ts | 2 +-
packages/playground/worker/__tests__/iife/worker.spec.ts | 2 +-
.../__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts | 2 +-
.../__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts | 2 +-
.../worker/__tests__/sourcemap/sourcemap-worker.spec.ts | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/packages/playground/worker/__tests__/es/es-worker.spec.ts b/packages/playground/worker/__tests__/es/es-worker.spec.ts
index fc1f30043a5da7..4e3fbab23cd407 100644
--- a/packages/playground/worker/__tests__/es/es-worker.spec.ts
+++ b/packages/playground/worker/__tests__/es/es-worker.spec.ts
@@ -64,7 +64,7 @@ if (isBuild) {
// assert correct files
test('inlined code generation', async () => {
const files = fs.readdirSync(assetsDir)
- expect(files.length).toBe(26)
+ expect(files.length).toBe(28)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const worker = files.find((f) => f.includes('my-worker'))
diff --git a/packages/playground/worker/__tests__/iife/worker.spec.ts b/packages/playground/worker/__tests__/iife/worker.spec.ts
index eb33848cf9c969..d7fa0308592793 100644
--- a/packages/playground/worker/__tests__/iife/worker.spec.ts
+++ b/packages/playground/worker/__tests__/iife/worker.spec.ts
@@ -64,7 +64,7 @@ if (isBuild) {
// assert correct files
test('inlined code generation', async () => {
const files = fs.readdirSync(assetsDir)
- expect(files.length).toBe(14)
+ expect(files.length).toBe(15)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const worker = files.find((f) => f.includes('my-worker'))
diff --git a/packages/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts b/packages/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts
index 34a3320f646587..30bc02627c6994 100644
--- a/packages/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts
+++ b/packages/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts
@@ -9,7 +9,7 @@ if (isBuild) {
test('sourcemap generation for web workers', async () => {
const files = fs.readdirSync(assetsDir)
// should have 2 worker chunk
- expect(files.length).toBe(28)
+ expect(files.length).toBe(30)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const indexSourcemap = getSourceMapUrl(content)
diff --git a/packages/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts b/packages/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts
index 8760e1f5d27ffc..5d0d467e84edc4 100644
--- a/packages/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts
+++ b/packages/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts
@@ -9,7 +9,7 @@ if (isBuild) {
test('sourcemap generation for web workers', async () => {
const files = fs.readdirSync(assetsDir)
// should have 2 worker chunk
- expect(files.length).toBe(14)
+ expect(files.length).toBe(15)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const indexSourcemap = getSourceMapUrl(content)
diff --git a/packages/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts b/packages/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts
index 44098a5a14a585..ba3f6bf22ae5af 100644
--- a/packages/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts
+++ b/packages/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts
@@ -9,7 +9,7 @@ if (isBuild) {
test('sourcemap generation for web workers', async () => {
const files = fs.readdirSync(assetsDir)
// should have 2 worker chunk
- expect(files.length).toBe(28)
+ expect(files.length).toBe(30)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const indexSourcemap = getSourceMapUrl(content)
From f27204fa0d91db1ad9ebb0e09055f849700a8c56 Mon Sep 17 00:00:00 2001
From: yoho
Date: Thu, 12 May 2022 21:06:49 +0800
Subject: [PATCH 4/6] fix: build error
---
packages/vite/src/node/plugins/worker.ts | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/packages/vite/src/node/plugins/worker.ts b/packages/vite/src/node/plugins/worker.ts
index f8ee64ce99d590..14364b64e01af3 100644
--- a/packages/vite/src/node/plugins/worker.ts
+++ b/packages/vite/src/node/plugins/worker.ts
@@ -5,9 +5,9 @@ import type { ResolvedConfig } from '../config'
import type { Plugin } from '../plugin'
import type { ViteDevServer } from '../server'
import { ENV_ENTRY, ENV_PUBLIC_PATH } from '../constants'
-import { cleanUrl, injectQuery, parseRequest } from '../utils'
+import { cleanUrl, getHash, injectQuery, parseRequest } from '../utils'
import { onRollupWarning } from '../build'
-import { fileToUrl, getAssetHash } from './asset'
+import { fileToUrl } from './asset'
interface WorkerCache {
// save worker bundle emitted files avoid overwrites the same file.
@@ -146,7 +146,7 @@ function emitSourcemapForWorkerEntry(
const basename = path.parse(cleanUrl(id)).name
const data = sourcemap.toString()
const content = Buffer.from(data)
- const contentHash = getAssetHash(content)
+ const contentHash = getHash(content)
const fileName = `${basename}.${contentHash}.js.map`
const filePath = path.posix.join(config.build.assetsDir, fileName)
emitWorkerSourcemap(context, config, {
@@ -189,7 +189,7 @@ export async function workerFileToUrl(
}
const code = await bundleWorkerEntry(ctx, config, id, query)
const basename = path.parse(cleanUrl(id)).name
- const contentHash = getAssetHash(code)
+ const contentHash = getHash(code)
const fileName = path.posix.join(
config.build.assetsDir,
`${basename}.${contentHash}.js`
From 2228aaec29ca7ed180af1a34de75a0ac9a424e47 Mon Sep 17 00:00:00 2001
From: yoho
Date: Sun, 15 May 2022 00:30:25 +0800
Subject: [PATCH 5/6] fix: test
---
playground/worker/__tests__/es/es-worker.spec.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/playground/worker/__tests__/es/es-worker.spec.ts b/playground/worker/__tests__/es/es-worker.spec.ts
index 59be22519f084d..b901a7deaeedbc 100644
--- a/playground/worker/__tests__/es/es-worker.spec.ts
+++ b/playground/worker/__tests__/es/es-worker.spec.ts
@@ -66,7 +66,7 @@ describe.runIf(isBuild)('build', () => {
test('inlined code generation', async () => {
const assetsDir = path.resolve(testDir, 'dist/es/assets')
const files = fs.readdirSync(assetsDir)
- expect(files.length).toBe(28)
+ expect(files.length).toBe(27)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const worker = files.find((f) => f.includes('my-worker'))
From dcb3efe628bec203f8f7ac3d758098cd2ff5af4c Mon Sep 17 00:00:00 2001
From: yoho
Date: Sat, 21 May 2022 10:04:58 +0800
Subject: [PATCH 6/6] fix: lint
---
packages/vite/src/node/plugins/workerImportMetaUrl.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts
index cf3ab11fb6686e..3e7426f52cda24 100644
--- a/packages/vite/src/node/plugins/workerImportMetaUrl.ts
+++ b/packages/vite/src/node/plugins/workerImportMetaUrl.ts
@@ -6,7 +6,7 @@ import { stripLiteral } from 'strip-literal'
import type { ResolvedConfig } from '../config'
import type { Plugin } from '../plugin'
import { cleanUrl, injectQuery, normalizePath, parseRequest } from '../utils'
-import type { WorkerType} from './worker';
+import type { WorkerType } from './worker'
import { WORKER_FILE_ID, workerFileToUrl } from './worker'
import { fileToUrl } from './asset'