96 lines
3.4 KiB
TypeScript
96 lines
3.4 KiB
TypeScript
import type {UserConfig} from 'vite';
|
|
|
|
import path from 'node:path';
|
|
import {defineConfig} from 'vite';
|
|
import VitePluginReact from '@vitejs/plugin-react-swc';
|
|
import ViteBabelPlugin from 'vite-plugin-babel';
|
|
|
|
// https://vite.dev/config/
|
|
export default defineConfig(({mode}) => {
|
|
const isProductionMode = mode === 'production';
|
|
|
|
// optional: const modeDependentEnvironmentVariables = loadEnv(mode, process.cwd()); // https://vite.dev/config/#using-environment-variables-in-config
|
|
return {
|
|
define: {},
|
|
root: path.resolve(process.cwd()),
|
|
publicDir: 'public',
|
|
cacheDir: 'node_modules/.vite', // default is `node_modules/.vite` <-- https://vite.dev/config/shared-options.html#cachedir
|
|
base: '/',
|
|
mode,
|
|
resolve: {
|
|
alias: {
|
|
assets: path.resolve(process.cwd(), 'src/assets'),
|
|
components: path.resolve(process.cwd(), 'src/components'),
|
|
services: path.resolve(process.cwd(), 'src/services'),
|
|
store: path.resolve(process.cwd(), 'src/store'),
|
|
styles: path.resolve(process.cwd(), 'src/styles'),
|
|
themes: path.resolve(process.cwd(), 'src/themes'),
|
|
utils: path.resolve(process.cwd(), 'src/utils'),
|
|
views: path.resolve(process.cwd(), 'src/views')
|
|
},
|
|
dedupe: [],
|
|
conditions: ['module', 'browser', 'development|production'], // default is `['module', 'browser', 'development|production']`
|
|
mainFields: ['browser', 'module'], // default is `['browser', 'module', 'jsnext:main', 'jsnext']`
|
|
extensions: ['.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json'],
|
|
preserveSymlinks: false // default is false
|
|
},
|
|
css: {
|
|
modules: undefined, // default is `undefined`
|
|
// postcss: {},
|
|
devSourcemap: true, // default is `false` **experimental Vite feature**
|
|
transformer: 'postcss' // default is `postcss` **experimental Vite feature**
|
|
},
|
|
json: {
|
|
stringify: true // default is 'auto' // https://vite.dev/config/shared-options.html#json-stringify
|
|
},
|
|
esbuild: {
|
|
jsxFactory: 'h',
|
|
jsxFragment: 'Fragment',
|
|
jsxInject: `import React from 'react'`
|
|
},
|
|
logLevel: 'debug', // default is `info`
|
|
clearScreen: false, // default is `true`
|
|
envDir: '.',
|
|
appType: 'spa',
|
|
server: {
|
|
host: 'localhost',
|
|
allowedHosts: ['localhost', '.phenixrts.com'],
|
|
port: 5173,
|
|
open: true,
|
|
hmr: true,
|
|
fs: {
|
|
strict: true,
|
|
deny: ['.env', '.env.*', '*.{crt,pem}', '**/.git/**'] // default is `['.env', '.env.*', '*.{crt,pem}', '**/.git/**']`
|
|
}
|
|
},
|
|
build: {
|
|
target: ['es2020', 'chrome80', 'firefox78', 'safari14'],
|
|
outDir: 'dist',
|
|
assetsDir: 'assets',
|
|
assetsInlineLimit: 4096, // default is `4096` ~ 4KiB
|
|
cssCodeSplit: true,
|
|
minify: isProductionMode,
|
|
cssMinify: isProductionMode,
|
|
sourcemap: !isProductionMode,
|
|
manifest: false, // default is `false`<-- https://vite.dev/config/build-options.html#build-manifest ,
|
|
ssrManifest: false,
|
|
ssr: false,
|
|
emitAssets: false,
|
|
terserOptions: {},
|
|
emptyOutDir: true,
|
|
copyPublicDir: true,
|
|
reportCompressedSize: true,
|
|
chunkSizeWarningLimit: 500,
|
|
watch: null
|
|
},
|
|
plugins: [
|
|
VitePluginReact(),
|
|
ViteBabelPlugin({
|
|
babelConfig: {
|
|
plugins: ['transform-amd-to-commonjs', 'babel-plugin-styled-components']
|
|
}
|
|
})
|
|
]
|
|
} satisfies UserConfig;
|
|
});
|