1
1
import { fileURLToPath } from 'node:url'
2
2
import { defu } from 'defu'
3
- import { addServerHandler , createResolver , defineNuxtModule } from '@nuxt/kit'
3
+ import { addServerHandler , addTemplate , createResolver , defineNuxtModule } from '@nuxt/kit'
4
4
import type { Options } from 'http-proxy-middleware'
5
5
import { hash , objectHash } from 'ohash'
6
6
@@ -25,42 +25,44 @@ export default defineNuxtModule<ModuleOptions>({
25
25
options : options . options ,
26
26
} )
27
27
28
- function createProxyMiddleware ( options : Options , index ?: number ) {
29
- return `
30
- import { createProxyMiddleware } from ${ JSON . stringify ( resolve ( runtimeDir , './middleware.ts' ) ) }
31
- import { defu } from 'defu'
32
- import { useRuntimeConfig } from '#imports'
33
-
34
- const buildtimeOptions = ${ JSON . stringify ( options ) }
35
- const runtimeOptions = [].concat(useRuntimeConfig().proxy?.options)[${ JSON . stringify ( index ) } ?? 0]
36
-
37
- export default createProxyMiddleware(defu(runtimeOptions, buildtimeOptions))
38
- `
28
+ function createProxyMiddleware ( options : Options , filename : string , index ?: number ) {
29
+ addTemplate ( {
30
+ filename,
31
+ write : true ,
32
+ getContents ( ) {
33
+ return `
34
+ import { createProxyMiddleware } from ${ JSON . stringify ( resolve ( runtimeDir , './middleware' ) ) }
35
+ import { defu } from 'defu'
36
+ import { useRuntimeConfig } from '#imports'
37
+
38
+ const buildtimeOptions = ${ JSON . stringify ( options ) }
39
+ const runtimeOptions = [].concat(useRuntimeConfig().proxy?.options)[${ JSON . stringify ( index ) } ?? 0]
40
+
41
+ export default createProxyMiddleware(defu(runtimeOptions, buildtimeOptions))
42
+ `
43
+ } ,
44
+ } )
39
45
}
40
46
41
- nuxt . hook ( 'nitro:config' , ( nitroConfig ) => {
42
- nitroConfig . virtual = nitroConfig . virtual || { }
43
-
44
- if ( Array . isArray ( finalConfig . options ) ) {
45
- finalConfig . options . forEach ( ( options , index ) => {
46
- const handler = `#http-proxy/${ hash ( objectHash ( options ) ) } .mjs`
47
- nitroConfig . virtual ! [ handler ] = createProxyMiddleware ( options , index )
48
-
49
- addServerHandler ( {
50
- handler,
51
- middleware : true ,
52
- } )
53
- } )
54
- }
55
- else {
56
- const handler = `#http-proxy/${ hash ( objectHash ( finalConfig . options ) ) } .mjs`
57
- nitroConfig . virtual [ handler ] = createProxyMiddleware ( finalConfig . options )
47
+ if ( Array . isArray ( finalConfig . options ) ) {
48
+ finalConfig . options . forEach ( ( options , index ) => {
49
+ const handler = `http-proxy/${ hash ( objectHash ( options ) ) } .ts`
50
+ createProxyMiddleware ( options , handler , index )
58
51
59
52
addServerHandler ( {
60
- handler,
53
+ handler : resolve ( nuxt . options . buildDir , handler ) ,
61
54
middleware : true ,
62
55
} )
63
- }
64
- } )
56
+ } )
57
+ }
58
+ else {
59
+ const handler = `http-proxy/${ hash ( objectHash ( finalConfig . options ) ) } .ts`
60
+ createProxyMiddleware ( finalConfig . options , handler )
61
+
62
+ addServerHandler ( {
63
+ handler : resolve ( nuxt . options . buildDir , handler ) ,
64
+ middleware : true ,
65
+ } )
66
+ }
65
67
} ,
66
68
} )
0 commit comments