Skip to content

Commit 0c6cdb0

Browse files
authored
fix(worker): fix applyToEnvironment hooks on worker build (vitejs#18793)
1 parent bbaf514 commit 0c6cdb0

File tree

11 files changed

+43
-10
lines changed

11 files changed

+43
-10
lines changed

packages/vite/src/node/config.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -522,9 +522,7 @@ export interface LegacyOptions {
522522

523523
export interface ResolvedWorkerOptions {
524524
format: 'es' | 'iife'
525-
plugins: (
526-
bundleChain: string[],
527-
) => Promise<{ plugins: Plugin[]; config: ResolvedConfig }>
525+
plugins: (bundleChain: string[]) => Promise<ResolvedConfig>
528526
rollupOptions: RollupOptions
529527
}
530528

@@ -1340,7 +1338,10 @@ export async function resolveConfig(
13401338
.map((hook) => hook(workerResolved)),
13411339
)
13421340

1343-
return { plugins: resolvedWorkerPlugins, config: workerResolved }
1341+
return {
1342+
...workerResolved,
1343+
plugins: resolvedWorkerPlugins,
1344+
}
13441345
}
13451346

13461347
const resolvedWorkerOptions: ResolvedWorkerOptions = {

packages/vite/src/node/plugins/worker.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,14 @@ async function bundleWorkerEntry(
7575
// bundle the file as entry to support imports
7676
const { rollup } = await import('rollup')
7777
const { plugins, rollupOptions, format } = config.worker
78-
const { plugins: resolvedPlugins, config: workerConfig } =
79-
await plugins(newBundleChain)
78+
const workerConfig = await plugins(newBundleChain)
8079
const workerEnvironment = new BuildEnvironment('client', workerConfig) // TODO: should this be 'worker'?
80+
await workerEnvironment.init()
81+
8182
const bundle = await rollup({
8283
...rollupOptions,
8384
input,
84-
plugins: resolvedPlugins.map((p) =>
85+
plugins: workerEnvironment.plugins.map((p) =>
8586
injectEnvironmentToHooks(workerEnvironment, p),
8687
),
8788
onwarn(warning, warn) {

playground/worker/__tests__/es/worker-es.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ test('normal', async () => {
1414
() => page.textContent('.asset-url'),
1515
isBuild ? '/es/assets/worker_asset-vite.svg' : '/es/vite.svg',
1616
)
17+
await untilUpdated(() => page.textContent('.dep-cjs'), '[cjs ok]')
1718
})
1819

1920
test('named', async () => {

playground/worker/__tests__/iife/worker-iife.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ test.runIf(isServe)('sourcemap is correct after env is injected', async () => {
189189
const content = await (await response).text()
190190
const { mappings } = decodeSourceMapUrl(content)
191191
expect(mappings).toMatchInlineSnapshot(
192-
`";;AAAA,SAAS,OAAO,kBAAkB;AAClC,SAAS,MAAM,WAAW;AAC1B,SAAS,wBAAwB;AACjC,OAAO,aAAa;AACpB,MAAM,UAAU,YAAY;AAE5B,KAAK,YAAY,CAAC,MAAM;AACtB,MAAI,EAAE,SAAS,QAAQ;AACrB,SAAK,YAAY,EAAE,KAAK,MAAM,kBAAkB,SAAS,SAAS,KAAK,CAAC;AAAA,EAC1E;AACA,MAAI,EAAE,SAAS,gBAAgB;AAC7B,SAAK,YAAY;AAAA,MACf,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;AACA,KAAK,YAAY;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,QAAQ,IAAI,cAAc"`,
192+
`";;AAAA,SAAS,OAAO,kBAAkB;AAClC,OAAO,YAAY;AACnB,SAAS,MAAM,WAAW;AAC1B,SAAS,wBAAwB;AACjC,OAAO,aAAa;AACpB,MAAM,UAAU,YAAY;AAE5B,KAAK,YAAY,CAAC,MAAM;AACtB,MAAI,EAAE,SAAS,QAAQ;AACrB,SAAK,YAAY;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,EAAE,SAAS,gBAAgB;AAC7B,SAAK,YAAY;AAAA,MACf,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;AACA,KAAK,YAAY;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,QAAQ,IAAI,cAAc"`,
193193
)
194194
})
195195

playground/worker/dep-cjs/index.cjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
exports.test = '[cjs ok]'
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "@vitejs/test-worker-dep-cjs",
3+
"type": "commonjs",
4+
"exports": "./index.cjs"
5+
}

playground/worker/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ <h2 class="format-iife">format iife:</h2>
1818
<div>mode: <span class="mode"></span></div>
1919
<div>bundle-with-plugin: <span class="bundle-with-plugin"></span></div>
2020
<div>asset-url: <span class="asset-url"></span></div>
21+
<div>dep-cjs: <span class="dep-cjs"></span></div>
2122
</div>
2223

2324
<p>

playground/worker/my-worker.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
import { msg as msgFromDep } from '@vitejs/test-dep-to-optimize'
2+
import depCjs from '@vitejs/test-worker-dep-cjs'
23
import { mode, msg } from './modules/workerImport.js'
34
import { bundleWithPlugin } from './modules/test-plugin'
45
import viteSvg from './vite.svg'
56
const metaUrl = import.meta.url
67

78
self.onmessage = (e) => {
89
if (e.data === 'ping') {
9-
self.postMessage({ msg, mode, bundleWithPlugin, viteSvg, metaUrl, name })
10+
self.postMessage({
11+
msg,
12+
mode,
13+
bundleWithPlugin,
14+
viteSvg,
15+
metaUrl,
16+
name,
17+
depCjs,
18+
})
1019
}
1120
if (e.data === 'ping-unicode') {
1221
self.postMessage({
@@ -16,6 +25,7 @@ self.onmessage = (e) => {
1625
viteSvg,
1726
metaUrl,
1827
name,
28+
depCjs,
1929
})
2030
}
2131
}
@@ -27,6 +37,7 @@ self.postMessage({
2737
viteSvg,
2838
metaUrl,
2939
name,
40+
depCjs,
3041
})
3142

3243
// for sourcemap

playground/worker/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
},
3030
"dependencies": {
3131
"@vitejs/test-dep-self-reference-url-worker": "file:./dep-self-reference-url-worker",
32-
"@vitejs/test-dep-to-optimize": "file:./dep-to-optimize"
32+
"@vitejs/test-dep-to-optimize": "file:./dep-to-optimize",
33+
"@vitejs/test-worker-dep-cjs": "file:./dep-cjs"
3334
}
3435
}

playground/worker/worker/main-module.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ worker.addEventListener('message', (e) => {
2121
text('.mode', e.data.mode)
2222
text('.bundle-with-plugin', e.data.bundleWithPlugin)
2323
text('.asset-url', e.data.viteSvg)
24+
text('.dep-cjs', e.data.depCjs.test)
2425
})
2526

2627
const namedWorker = new myWorker({ name: 'namedWorker' })

pnpm-lock.yaml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)