Files
romm/frontend/vite.config.js
Georges-Antoine Assi faa9c9826a working emulatorjs
2024-01-19 00:32:22 -05:00

89 lines
2.3 KiB
JavaScript

// Plugins
import vue from "@vitejs/plugin-vue";
import vuetify, { transformAssetUrls } from "vite-plugin-vuetify";
import { VitePWA } from "vite-plugin-pwa";
import pluginRewriteAll from "vite-plugin-rewrite-all";
import { viteStaticCopy } from 'vite-plugin-static-copy'
// Utilities
import { defineConfig, loadEnv } from "vite";
import { fileURLToPath, URL } from "node:url";
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
// Load ENV variables from the parent directory and the current directory.
const env = { ...loadEnv(mode, "../"), ...loadEnv(mode, "./") };
const backendPort = env.VITE_BACKEND_DEV_PORT ?? "5000";
return {
build: {
target: "esnext",
},
plugins: [
pluginRewriteAll(),
vue({
template: { transformAssetUrls },
}),
vuetify({
autoImport: true,
styles: {
configFile: "src/styles/settings.scss",
},
}),
VitePWA({
injectRegister: null,
manifest: {
icons: [
{
src: "favicon.ico",
sizes: "256x256",
type: "image/ico",
purpose: "any maskable",
},
],
},
devOptions: {
enabled: true,
type: "module",
},
}),
viteStaticCopy({
targets: [
{
src: 'node_modules/emulatorjs/data/*',
dest: 'assets/emulatorjs/'
}
]
})
],
define: { "process.env": {} },
resolve: {
alias: {
"@": fileURLToPath(new URL("./src", import.meta.url)),
},
extensions: [".js", ".json", ".jsx", ".mjs", ".ts", ".tsx", ".vue"],
},
server: {
proxy: {
"/api": {
target: `http://localhost:${backendPort}`,
changeOrigin: false,
secure: false,
rewrite: (path) => path.replace(/^\/api/, ""),
},
"/ws": {
target: `http://localhost:${backendPort}`,
changeOrigin: false,
ws: true,
},
"/openapi.json": {
target: `http://localhost:${backendPort}`,
changeOrigin: false,
rewrite: (path) => path.replace(/^\/openapi.json/, "/openapi.json"),
},
},
port: 3000,
},
};
});