You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
939 B
JavaScript
34 lines
939 B
JavaScript
import { dirname, resolve } from 'path'
|
|
import express from 'express'
|
|
import { createServer as createViteServer } from 'vite'
|
|
import { fileURLToPath } from 'url'
|
|
|
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
|
|
async function createServer(customHtmlRoutes) {
|
|
const app = express()
|
|
|
|
// In middleware mode, if you want to use Vite's own HTML serving logic
|
|
// use `'html'` as the `middlewareMode` (ref https://vitejs.dev/config/#server-middlewaremode)
|
|
const vite = await createViteServer({
|
|
server: { middlewareMode: 'html' },
|
|
})
|
|
|
|
for (const [route, file] of Object.entries(customHtmlRoutes)) {
|
|
app.get(route, (req, res) => {
|
|
const filePath = resolve(__dirname, file)
|
|
console.log(`Custom Route: %s`, req.url)
|
|
|
|
return res.sendFile(filePath)
|
|
})
|
|
}
|
|
|
|
app.use(vite.middlewares)
|
|
|
|
app.listen(3000)
|
|
}
|
|
|
|
createServer({
|
|
'/': './index.html',
|
|
})
|