import {resolve} from "path"; import {spawnSync} from "child_process"; import {defineConfig, loadEnv} from 'vite' import {createVuePlugin} from 'vite-plugin-vue2'; import vitePluginRequire from 'vite-plugin-require' import vitePluginFileCopy from 'vite-plugin-file-copy'; const argv = process.argv; const isCmd = argv.includes('fromcmd'); const isElectron = argv.includes('electron'); const publicPath = isElectron ? 'electron/public' : 'public'; if (!isCmd) { spawnSync("npx", [resolve(__dirname, 'cmd'), argv.includes("build") ? "build" : "dev"], {stdio: "inherit"}); process.exit() } export default defineConfig(({command, mode}) => { const env = loadEnv(mode, process.cwd(), '') const host = "0.0.0.0" const port = parseInt(env['APP_DEV_PORT']) return { base: isElectron ? './' : '/', publicDir: publicPath, server: { host, port, strictPort: false, }, resolve: { alias: { '~element-ui': resolve(__dirname, 'node_modules/element-ui'), '~quill': resolve(__dirname, 'node_modules/quill'), '~quill-mention-hi': resolve(__dirname, 'node_modules/quill-mention-hi'), '../images': resolve(__dirname, command === 'serve' ? '/images' : 'resources/assets/statics/public/images'), '../css': resolve(__dirname, command === 'serve' ? '/css' : 'resources/assets/statics/public/css') }, extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] }, define: { 'process.env.NODE_ENV': command === 'serve' ? '"development"' : '"production"', }, build: { manifest: true, outDir: publicPath, assetsDir: "js/build", emptyOutDir: false, rollupOptions: { input: 'resources/assets/js/app.js', }, brotliSize: false, chunkSizeWarningLimit: 3000, }, plugins: [ createVuePlugin(), vitePluginRequire(), vitePluginFileCopy([{ src: resolve(__dirname, 'resources/assets/statics/public'), dest: resolve(__dirname, publicPath) }]), ] }; });