-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathvite.config.ts
More file actions
43 lines (41 loc) · 1.25 KB
/
vite.config.ts
File metadata and controls
43 lines (41 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
import path from 'path'
import fs from 'fs'
function serveStaticDir(urlPrefix: string, dirPath: string) {
const dir = path.resolve(__dirname, dirPath)
return {
name: `serve-${urlPrefix.replace(/\//g, '-')}`,
configureServer(server: import('vite').ViteDevServer) {
server.middlewares.use((req, res, next) => {
if (!req.url?.startsWith(urlPrefix)) return next()
const filePath = path.join(dir, req.url.slice(urlPrefix.length))
if (!path.resolve(filePath).startsWith(dir)) return next()
if (fs.existsSync(filePath) && fs.statSync(filePath).isFile()) {
const stat = fs.statSync(filePath)
res.setHeader('Content-Length', stat.size)
fs.createReadStream(filePath).pipe(res)
} else {
next()
}
})
},
}
}
// https://vite.dev/config/
export default defineConfig({
plugins: [
tailwindcss(),
react(),
serveStaticDir('/sprites-png/', 'tibia/sprites-png'),
serveStaticDir('/data/', 'data'),
serveStaticDir('/maps/', 'maps'),
],
publicDir: false,
server: {
proxy: {
'/api': 'http://localhost:8080',
},
},
})