import { fileURLToPath, URL } from 'url' import { defineConfig, loadEnv } from 'vite' import fs from 'fs' import vue from '@vitejs/plugin-vue2' export default defineConfig(({ command, mode }) => { // Load env file based on `mode` in the current working directory. // Set the third parameter to '' to load all env regardless of the `VITE_` prefix. const env = loadEnv(mode, process.cwd()) const config = { define: { // fake process.env for some deps 'process.env': {}, }, resolve: { alias: [ // this is required for the SCSS modules imports with `~` (node_modules) { find: /^~(.*)$/, replacement: '$1' }, { find: '@', replacement: fileURLToPath(new URL('./src', import.meta.url)), }, ], }, css: { preprocessorOptions: { scss: { // To auto inject scss variables into componentns scope additionalData: ` @import "@/scss/_variables.scss"; `, }, }, }, plugins: [vue()], build: { rollupOptions: { output: { manualChunks: (id) => { // Circular import problems, this will merge vue/vuex/etc. and api together if (!id.includes('node_modules') && id.includes('api/')) { return 'core' } }, }, }, }, } if (mode === 'production') { return { ...config, base: '/yunohost/admin', } } else if (mode === 'development') { return { ...config, server: { port: 8080, host: env.VITE_IP, https: { // Use already created cert from yunohost instance key: fs.readFileSync('/etc/yunohost/certs/yunohost.org/key.pem'), cert: fs.readFileSync('/etc/yunohost/certs/yunohost.org/crt.pem'), }, fs: { // Needed for special ynh-dev context where node_modules is symlinked allow: [ '/ynh-dev/yunohost-admin/app', '/var/cache/ynh-dev/yunohost-admin/node_modules', ], }, proxy: { '/yunohost': { target: `https://${env.VITE_IP}`, ws: true, logLevel: 'info', secure: false, }, }, }, } } })