File tree 7 files changed +62
-1
lines changed
__tests__/relative-base-iife
7 files changed +62
-1
lines changed Original file line number Diff line number Diff line change @@ -1100,6 +1100,12 @@ const relativeUrlMechanisms: Record<
1100
1100
}
1101
1101
/* end of copy */
1102
1102
1103
+ const customRelativeUrlMechanisms = {
1104
+ ...relativeUrlMechanisms ,
1105
+ 'worker-iife' : ( relativePath ) =>
1106
+ getResolveUrl ( `'${ relativePath } ', self.location.href` ) ,
1107
+ } as const satisfies Record < string , ( relativePath : string ) => string >
1108
+
1103
1109
export type RenderBuiltAssetUrl = (
1104
1110
filename : string ,
1105
1111
type : {
@@ -1149,8 +1155,10 @@ export function toOutputFilePathInJS(
1149
1155
1150
1156
export function createToImportMetaURLBasedRelativeRuntime (
1151
1157
format : InternalModuleFormat ,
1158
+ isWorker : boolean ,
1152
1159
) : ( filename : string , importer : string ) => { runtime : string } {
1153
- const toRelativePath = relativeUrlMechanisms [ format ]
1160
+ const formatLong = isWorker && format === 'iife' ? 'worker-iife' : format
1161
+ const toRelativePath = customRelativeUrlMechanisms [ formatLong ]
1154
1162
return ( filename , importer ) => ( {
1155
1163
runtime : toRelativePath (
1156
1164
path . posix . relative ( path . dirname ( importer ) , filename ) ,
Original file line number Diff line number Diff line change @@ -69,6 +69,7 @@ export function renderAssetUrlInJS(
69
69
) : MagicString | undefined {
70
70
const toRelativeRuntime = createToImportMetaURLBasedRelativeRuntime (
71
71
opts . format ,
72
+ config . isWorker ,
72
73
)
73
74
74
75
let match : RegExpExecArray | null
Original file line number Diff line number Diff line change @@ -369,6 +369,7 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin {
369
369
if ( code . match ( workerAssetUrlRE ) ) {
370
370
const toRelativeRuntime = createToImportMetaURLBasedRelativeRuntime (
371
371
outputOptions . format ,
372
+ config . isWorker ,
372
373
)
373
374
374
375
let match : RegExpExecArray | null
Original file line number Diff line number Diff line change
1
+ import { test } from 'vitest'
2
+ import { isBuild , page , untilUpdated } from '~utils'
3
+
4
+ test ( 'asset url' , async ( ) => {
5
+ await untilUpdated (
6
+ ( ) => page . textContent ( '.asset-url' ) ,
7
+ isBuild ? '/worker-assets/worker_asset-vite' : '/vite.svg' ,
8
+ true ,
9
+ )
10
+ } )
Original file line number Diff line number Diff line change
1
+ export { default } from '../../vite.config-relative-base-iife'
Original file line number Diff line number Diff line change 21
21
"dev:relative-base" : " WORKER_MODE=inline vite --config ./vite.config-relative-base.js dev" ,
22
22
"build:relative-base" : " WORKER_MODE=inline vite --config ./vite.config-relative-base.js build" ,
23
23
"preview:relative-base" : " WORKER_MODE=inline vite --config ./vite.config-relative-base.js preview" ,
24
+ "dev:relative-base-iife" : " WORKER_MODE=inline vite --config ./vite.config-relative-base-iife.js dev" ,
25
+ "build:relative-base-iife" : " WORKER_MODE=inline vite --config ./vite.config-relative-base-iife.js build" ,
26
+ "preview:relative-base-iife" : " WORKER_MODE=inline vite --config ./vite.config-relative-base-iife.js preview" ,
24
27
"debug" : " node --inspect-brk ../../packages/vite/bin/vite"
25
28
},
26
29
"dependencies" : {
Original file line number Diff line number Diff line change
1
+ import vite from 'vite'
2
+ import workerPluginTestPlugin from './worker-plugin-test-plugin'
3
+
4
+ export default vite . defineConfig ( {
5
+ base : './' ,
6
+ resolve : {
7
+ alias : {
8
+ '@' : __dirname ,
9
+ } ,
10
+ } ,
11
+ worker : {
12
+ format : 'iife' ,
13
+ plugins : [ workerPluginTestPlugin ( ) ] ,
14
+ rollupOptions : {
15
+ output : {
16
+ assetFileNames : 'worker-assets/worker_asset-[name]-[hash].[ext]' ,
17
+ chunkFileNames : 'worker-chunks/worker_chunk-[name]-[hash].js' ,
18
+ entryFileNames : 'worker-entries/worker_entry-[name]-[hash].js' ,
19
+ } ,
20
+ } ,
21
+ } ,
22
+ build : {
23
+ outDir : 'dist/relative-base-iife' ,
24
+ rollupOptions : {
25
+ output : {
26
+ assetFileNames : 'other-assets/[name]-[hash].[ext]' ,
27
+ chunkFileNames : 'chunks/[name]-[hash].js' ,
28
+ entryFileNames : 'entries/[name]-[hash].js' ,
29
+ } ,
30
+ } ,
31
+ } ,
32
+ testConfig : {
33
+ baseRoute : '/relative-base-iife/' ,
34
+ } ,
35
+ plugins : [ workerPluginTestPlugin ( ) ] ,
36
+ cacheDir : 'node_modules/.vite-relative-base-iife' ,
37
+ } )
You can’t perform that action at this time.
0 commit comments