mirror of
https://github.com/mue/mue.git
synced 2026-07-07 14:17:09 +02:00
80 lines
2.0 KiB
JavaScript
80 lines
2.0 KiB
JavaScript
import { defineConfig, loadEnv } from 'vite';
|
|
import inspect from 'vite-plugin-inspect';
|
|
import react from '@vitejs/plugin-react-swc';
|
|
import path from 'path';
|
|
import progress from 'vite-plugin-progress';
|
|
import I18nPlugin from '@eartharoid/vite-plugin-i18n';
|
|
import YAML from 'yaml';
|
|
import finalise from './build/finalise';
|
|
|
|
const r = (...p) => path.resolve(__dirname, ...p);
|
|
const isProd = process.env.NODE_ENV === 'production';
|
|
|
|
|
|
export default defineConfig(({ command, mode }) => {
|
|
const env = loadEnv(mode, process.cwd(), '');
|
|
return {
|
|
define: {
|
|
__APP_ENV__: JSON.stringify(env.APP_ENV),
|
|
},
|
|
plugins: [
|
|
inspect(),
|
|
react(),
|
|
I18nPlugin({
|
|
default: 'en-GB',
|
|
id_regex: /((?<locale>[a-z0-9-_]+)\/)((_(?<namespace>[a-z0-9-_]+))|[a-z0-9-_]+)\.[a-z]+/i,
|
|
include: './src/i18n/**/*.yml',
|
|
parser: YAML.parse,
|
|
}),
|
|
finalise(isProd),
|
|
progress()
|
|
],
|
|
server: {
|
|
open: true,
|
|
hmr: {
|
|
protocol: 'ws',
|
|
host: 'localhost',
|
|
},
|
|
},
|
|
build: {
|
|
target: ['es2022', 'chrome89', 'edge89', 'firefox89', 'safari15'],
|
|
minify: isProd ? 'esbuild' : false,
|
|
sourcemap: !isProd,
|
|
rollupOptions: {
|
|
output: {
|
|
manualChunks(id) {
|
|
if (id.includes('node_modules')) {
|
|
if (id.includes('@mui')) {
|
|
return 'vendor_mui';
|
|
}
|
|
|
|
return 'vendor';
|
|
}
|
|
},
|
|
},
|
|
},
|
|
},
|
|
resolve: {
|
|
extensions: ['.js', '.jsx'],
|
|
alias: {
|
|
'@': r('./src'),
|
|
i18n: r('./src/i18n'),
|
|
components: r('./src/components'),
|
|
assets: r('./src/assets'),
|
|
config: r('./src/config'),
|
|
features: r('./src/features'),
|
|
lib: r('./src/lib'),
|
|
scss: r('./src/scss'),
|
|
utils: r('./src/utils'),
|
|
},
|
|
},
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
api: 'modern-compiler',
|
|
},
|
|
},
|
|
},
|
|
};
|
|
});
|