-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathvite.config.js
More file actions
97 lines (96 loc) · 3.02 KB
/
vite.config.js
File metadata and controls
97 lines (96 loc) · 3.02 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import { defineConfig } from 'vite';
export default defineConfig({
base: './', // 相对路径,兼容Cloudflare Pages
build: {
outDir: 'dist',
emptyOutDir: true,
target: 'es2015',
minify: 'terser',
terserOptions: {
format: {
comments: false
}
},
rollupOptions: {
output: {
manualChunks: undefined
}
}
},
optimizeDeps: {
exclude: ['@rollup/rollup-linux-x64-gnu']
},
server: {
open: true,
proxy: {
// Pixiv图片代理 - 处理完整路径
'/api/image-proxy/pixiv/': {
target: 'https://i.pixiv.re/',
changeOrigin: true,
configure: (proxy, options) => {
proxy.on('proxyReq', (proxyReq, req, res) => {
const targetPath = req.url.replace(/^\/api\/image-proxy\/pixiv\//, '');
console.log('🔄 代理Pixiv图片请求:', req.url, '→', options.target + targetPath);
});
proxy.on('error', (err, req, res) => {
console.error('❌ Pixiv代理错误:', err);
res.writeHead(500, {
'Content-Type': 'text/plain'
});
res.end('Pixiv代理错误: ' + err.message);
});
},
rewrite: (path) => {
const result = path.replace(/^\/api\/image-proxy\/pixiv\//, '');
console.log('⚙️ Pixiv重写路径:', path, '→', result);
return result;
}
},
// DuckMo API代理
'/api/duckmo': {
target: 'https://api.mossia.top',
changeOrigin: true,
configure: (proxy, options) => {
proxy.on('proxyReq', (proxyReq, req, res) => {
console.log('🔄 代理API请求:', req.url, '→', options.target + '/duckMo');
});
},
rewrite: (path) => {
return '/duckMo';
}
},
// 通用图片代理 (仅处理非Pixiv图片)
'/api/image-proxy/': {
target: 'https://i.imgur.com/',
changeOrigin: true,
configure: (proxy, options) => {
proxy.on('proxyReq', (proxyReq, req, res) => {
if (!req.url.includes('/pixiv/')) {
console.log('🔄 代理通用图片请求:', req.url, '→', options.target + req.url.replace(/^\/api\/image-proxy\//, ''));
}
});
},
rewrite: (path) => {
// 如果是Pixiv路径,不在这里处理
if (path.includes('/pixiv/')) {
return path;
}
const result = path.replace(/^\/api\/image-proxy\//, '');
console.log('⚙️ 通用图片重写路径:', path, '→', result);
return result;
}
},
// 兼容旧的路径格式 - 便于过渡
'/image-proxy/pixiv/': {
target: 'https://i.pixiv.re/',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/image-proxy\/pixiv\//, '')
},
'/image-proxy/': {
target: 'https://i.imgur.com/',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/image-proxy\//, '')
}
}
}
});