37 lines
879 B
TypeScript
37 lines
879 B
TypeScript
import { defineConfig } from 'vite'
|
|
import { subpages, renderSubpage } from './src/subpages'
|
|
|
|
export default defineConfig({
|
|
publicDir: 'public',
|
|
build: {
|
|
assetsInlineLimit: 0,
|
|
},
|
|
appType: 'mpa',
|
|
plugins: [
|
|
{
|
|
name: 'clean-urls',
|
|
configureServer(server) {
|
|
server.middlewares.use((req, _res, next) => {
|
|
const url = req.url?.split('?')[0] ?? ''
|
|
if (url.match(/^\/[a-z]+$/) && !url.includes('.')) {
|
|
req.url = url + '/index.html'
|
|
}
|
|
next()
|
|
})
|
|
},
|
|
},
|
|
{
|
|
name: 'generate-subpages',
|
|
generateBundle() {
|
|
for (const page of subpages) {
|
|
this.emitFile({
|
|
type: 'asset',
|
|
fileName: `${page.path}/index.html`,
|
|
source: renderSubpage(page),
|
|
})
|
|
}
|
|
},
|
|
},
|
|
],
|
|
})
|