89 lines
3.4 KiB
TypeScript
89 lines
3.4 KiB
TypeScript
import vue from '@vitejs/plugin-vue';
|
|
import * as path from "path";
|
|
import { defineConfig, loadEnv } from 'vite';
|
|
import zlib from 'zlib';
|
|
|
|
export default defineConfig(({ mode }) => {
|
|
const env = loadEnv(mode, process.cwd(), '');
|
|
|
|
return {
|
|
plugins: [vue()],
|
|
resolve: {
|
|
alias: {
|
|
'src': path.resolve(__dirname, './src/'),
|
|
'@': path.resolve(__dirname, './src/'),
|
|
},
|
|
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
|
|
},
|
|
server: {
|
|
port: 3000,
|
|
strictPort: true,
|
|
watch: {
|
|
usePolling: true
|
|
},
|
|
proxy: {
|
|
'/api/': {
|
|
target: env.API_URL,
|
|
changeOrigin: true,
|
|
followRedirects: true,
|
|
rewrite: path => path.replace(/^\/api/, ''),
|
|
selfHandleResponse: true,
|
|
configure: proxy => {
|
|
proxy.on('proxyRes', (proxyRes, req, res) => {
|
|
const chunks = [];
|
|
|
|
proxyRes.on("data", (chunk) => chunks.push(chunk));
|
|
proxyRes.on("end", () => {
|
|
const buffer = Buffer.concat(chunks);
|
|
const encoding = proxyRes.headers["content-encoding"];
|
|
const relace = (b: Buffer) => {
|
|
let remoteBody = b.toString();
|
|
const modifiedBody = remoteBody.replace(env.API_URL, '/api/');
|
|
|
|
res.write(modifiedBody);
|
|
res.end();
|
|
}
|
|
|
|
if (!encoding) {
|
|
relace(buffer);
|
|
} else if (encoding === "gzip" || encoding === "deflate") {
|
|
zlib.unzip(buffer, (err, b) => {
|
|
if (!err) {
|
|
relace(b);
|
|
} else {
|
|
console.error(err);
|
|
}
|
|
});
|
|
} else {
|
|
console.error(`Unsupported encoding: ${encoding}`);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
},
|
|
'/pocketbase/': {
|
|
target: env.POCKET_BASE_URL,
|
|
changeOrigin: true,
|
|
followRedirects: true,
|
|
rewrite: path => path.replace(/^\/pocketbase/, ''),
|
|
},
|
|
'/appraisal/': {
|
|
target: env.EVEPRAISAL_URL,
|
|
changeOrigin: true,
|
|
followRedirects: true,
|
|
rewrite: path => path.replace(/^\/appraisal/, ''),
|
|
},
|
|
'/esi/': {
|
|
target: env.ESI_URL,
|
|
changeOrigin: true,
|
|
followRedirects: true,
|
|
rewrite: path => path.replace(/^\/esi/, ''),
|
|
headers: {
|
|
'User-Agent': env.ESI_USER_AGENT
|
|
},
|
|
}
|
|
}
|
|
}
|
|
};
|
|
})
|