gf-vben-admin/vite.config.ts

135 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import type { UserConfig } from 'vite';
import { resolve } from 'path';
import { modifyVars } from './build/config/lessModifyVars';
import { createProxy } from './build/vite/proxy';
import globbyTransform from './build/vite/plugin/context/transform';
import { isDevFn, loadEnv } from './build/utils';
import { createRollupPlugin, createVitePlugins } from './build/vite/plugin';
const pkg = require('./package.json');
const viteEnv = loadEnv();
const {
VITE_PORT,
VITE_PUBLIC_PATH,
VITE_PROXY,
VITE_DROP_CONSOLE,
// VITE_USE_CDN,
} = viteEnv;
function pathResolve(dir: string) {
return resolve(__dirname, '.', dir);
}
const viteConfig: UserConfig = {
/**
* Entry. Use this to specify a js entry file in use cases where an
* `index.html` does not exist (e.g. serving vite assets from a different host)
* @default 'index.html'
*/
// TODO build error
// entry: './public/index.html',
/**
* 端口号
* @default '3000'
*/
port: VITE_PORT,
/**
* 服务地址
* @default 'localhost'
*/
hostname: 'localhost',
/**
* 运行自动打开浏览器·
* @default 'false'
*/
open: false,
/**
* 压缩代码
* boolean | 'terser' | 'esbuild'
* @default 'terser'
*/
minify: isDevFn() ? 'esbuild' : 'terser',
/**
* 基本公共路径
* @default '/'
*/
base: VITE_PUBLIC_PATH,
/**
* 打包输入路径
* @default 'dist'
*/
outDir: 'dist',
/**
* @default 'false'
*/
sourcemap: false,
/**
* 资源输出路径
* @default '_assets'
*/
assetsDir: '_assets',
/**
* 静态资源小于该大小将会内联默认4096kb
* @default '4096'
*/
assetsInlineLimit: 4096,
/**
* esbuild转换目标。
* @default 'es2020'
*/
esbuildTarget: 'es2020',
silent: false,
// 别名
alias: {
'/@/': pathResolve('src'),
},
// terser配置
terserOptions: {
compress: {
// 是否删除console
drop_console: VITE_DROP_CONSOLE,
},
},
define: {
__VERSION__: pkg.version,
},
// css预处理
cssPreprocessOptions: {
less: {
modifyVars: modifyVars,
javascriptEnabled: true,
},
},
// 会使用 rollup 对 包重新编译,将编译成符合 esm 模块规范的新的包放入 node_modules/.vite_opt_cache
optimizeDeps: {
include: [
'echarts',
'echarts/map/js/china',
'ant-design-vue/es/locale/zh_CN',
'@ant-design/icons-vue',
'moment/locale/zh-cn',
],
},
// 本地跨域代理
proxy: createProxy(VITE_PROXY),
plugins: createVitePlugins(viteEnv),
rollupInputOptions: {
// TODO
// external: VITE_USE_CDN ? externals : [],
plugins: createRollupPlugin(),
},
};
export default {
...viteConfig,
transforms: [globbyTransform(viteConfig)],
} as UserConfig;