Skip to content

Commit 0d8e891

Browse files
committed
fix: write proxy handlers to buildDir
1 parent 4129e61 commit 0d8e891

File tree

1 file changed

+34
-32
lines changed

1 file changed

+34
-32
lines changed

src/module.ts

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { fileURLToPath } from 'node:url'
22
import { defu } from 'defu'
3-
import { addServerHandler, createResolver, defineNuxtModule } from '@nuxt/kit'
3+
import { addServerHandler, addTemplate, createResolver, defineNuxtModule } from '@nuxt/kit'
44
import type { Options } from 'http-proxy-middleware'
55
import { hash, objectHash } from 'ohash'
66

@@ -25,42 +25,44 @@ export default defineNuxtModule<ModuleOptions>({
2525
options: options.options,
2626
})
2727

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+
})
3945
}
4046

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)
5851

5952
addServerHandler({
60-
handler,
53+
handler: resolve(nuxt.options.buildDir, handler),
6154
middleware: true,
6255
})
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+
}
6567
},
6668
})

0 commit comments

Comments
 (0)