2020-12-01 21:02:37 +08:00
import type { UserConfig , Resolver } from 'vite' ;
2020-09-28 20:19:10 +08:00
import { resolve } from 'path' ;
2020-12-22 22:13:03 +08:00
import { loadEnv } from 'vite' ;
2020-10-27 21:21:14 +08:00
import { modifyVars } from './build/config/lessModifyVars' ;
import { createProxy } from './build/vite/proxy' ;
2020-12-04 23:35:58 +08:00
import { configManualChunk } from './build/vite/optimizer' ;
2020-11-19 23:01:27 +08:00
import globbyTransform from './build/vite/plugin/transform/globby' ;
import dynamicImportTransform from './build/vite/plugin/transform/dynamic-import' ;
2020-10-27 21:21:14 +08:00
2020-12-22 22:13:03 +08:00
import { wrapperEnv } from './build/utils' ;
2020-09-28 20:19:10 +08:00
2020-10-27 21:21:14 +08:00
import { createRollupPlugin , createVitePlugins } from './build/vite/plugin' ;
2020-10-13 01:40:21 +08:00
const pkg = require ( './package.json' ) ;
2020-09-28 20:19:10 +08:00
function pathResolve ( dir : string ) {
return resolve ( __dirname , '.' , dir ) ;
}
2020-10-10 21:28:43 +08:00
2020-12-01 21:02:37 +08:00
const alias : Record < string , string > = {
'/@/' : pathResolve ( 'src' ) ,
} ;
const root : string = process . cwd ( ) ;
const resolvers : Resolver [ ] = [ ] ;
2020-12-22 22:13:03 +08:00
export default ( mode : 'development' | 'production' ) : UserConfig = > {
const env = loadEnv ( mode , root ) ;
const viteEnv = wrapperEnv ( env ) ;
const {
VITE_PORT ,
VITE_PUBLIC_PATH ,
VITE_PROXY ,
VITE_DROP_CONSOLE ,
VITE_DYNAMIC_IMPORT ,
} = viteEnv ;
return {
root ,
alias ,
/ * *
* port
* @default '3000'
* /
port : VITE_PORT ,
/ * *
* Base public path when served in production .
* @default '/'
* /
base : VITE_PUBLIC_PATH ,
/ * *
* Transpile target for esbuild .
* @default 'es2020'
* /
esbuildTarget : 'es2019' ,
// terser options
terserOptions : {
compress : {
keep_infinity : true ,
drop_console : VITE_DROP_CONSOLE ,
} ,
} ,
define : {
__VERSION__ : pkg.version ,
// setting vue-i18-next
// Suppress warning
__VUE_I18N_LEGACY_API__ : false ,
__VUE_I18N_FULL_INSTALL__ : false ,
__INTLIFY_PROD_DEVTOOLS__ : false ,
} ,
cssPreprocessOptions : {
less : {
2020-12-29 23:37:40 +08:00
modifyVars : {
// reference : Avoid repeated references
hack : ` true; @import (reference) " ${ resolve ( 'src/design/config.less' ) } "; ` ,
. . . modifyVars ,
} ,
2020-12-22 22:13:03 +08:00
javascriptEnabled : true ,
} ,
2020-10-16 22:03:44 +08:00
} ,
2020-12-22 22:13:03 +08:00
// The package will be recompiled using rollup, and the new package compiled into the esm module specification will be put into node_modules/.vite_opt_cache
optimizeDeps : {
include : [
'qs' ,
'echarts/map/js/china' ,
'ant-design-vue/es/locale/zh_CN' ,
'ant-design-vue/es/locale/en_US' ,
'@ant-design/icons-vue' ,
] ,
2020-09-28 20:19:10 +08:00
} ,
2020-12-22 22:13:03 +08:00
transforms : [
globbyTransform ( {
resolvers : resolvers ,
root : root ,
alias : alias ,
includes : [ resolve ( 'src/router' ) , resolve ( 'src/locales' ) ] ,
} ) ,
dynamicImportTransform ( VITE_DYNAMIC_IMPORT ) ,
2020-11-23 00:35:15 +08:00
] ,
2020-12-01 21:02:37 +08:00
2020-12-22 22:13:03 +08:00
proxy : createProxy ( VITE_PROXY ) ,
plugins : createVitePlugins ( viteEnv , mode ) ,
rollupInputOptions : {
plugins : createRollupPlugin ( ) ,
} ,
rollupOutputOptions : {
compact : true ,
manualChunks : configManualChunk ,
} ,
} ;
} ;