/* eslint-disable import/no-extraneous-dependencies */
///
import { resolve } from 'node:path';
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
// import { visualizer } from 'rollup-plugin-visualizer';
const alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function base62(n: number) {
if (n === 0) {
return alphabet.charAt(0);
}
let i = n;
let sb = '';
while (i > 0) {
const rem = i % 62;
sb = alphabet.charAt(rem) + sb;
i = Math.floor(i / 62);
}
return sb;
}
function scopedNameGenerator() {
const counterMap: Record = {};
let counter = 1;
return (name: string, filename: string) => {
const key = `${filename}_${name}`;
let c: number;
if (counterMap[key]) {
c = counterMap[key];
} else {
counterMap[key] = counter;
c = counter;
counter += 1;
}
return `wpswlr-${base62(c)}`;
};
}
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => ({
plugins: [
react(),
// visualizer({ emitFile: true, filename: 'stats.html' })
],
define: {
'process.env.NODE_ENV': `"${mode}"`,
},
css: {
modules: {
generateScopedName: mode === 'development' ? undefined : scopedNameGenerator(),
},
},
build: {
target: 'es2020',
outDir: resolve(__dirname, '../assets/admin'),
emptyOutDir: true,
lib: {
entry: resolve(__dirname, 'src/main.tsx'),
fileName: 'app',
name: 'wpswlr',
formats: ['iife'],
},
minify: mode !== 'development',
},
}));