提交 | 用户 | age
|
99ac30
|
1 |
import type { UserConfig, ConfigEnv } from 'vite'; |
2f6253
|
2 |
import { resolve } from 'path'; |
99ac30
|
3 |
import vue from '@vitejs/plugin-vue'; |
V |
4 |
import vueJsx from '@vitejs/plugin-vue-jsx'; |
|
5 |
import legacy from '@vitejs/plugin-legacy'; |
2f6253
|
6 |
|
bd7b53
|
7 |
import { loadEnv } from 'vite'; |
V |
8 |
|
173d40
|
9 |
import { modifyVars } from './build/config/lessModifyVars'; |
V |
10 |
import { createProxy } from './build/vite/proxy'; |
8882d4
|
11 |
|
bd7b53
|
12 |
import { wrapperEnv } from './build/utils'; |
2f6253
|
13 |
|
99ac30
|
14 |
import { createVitePlugins } from './build/vite/plugin'; |
173d40
|
15 |
|
bb3b8f
|
16 |
const pkg = require('./package.json'); |
2f6253
|
17 |
|
陈 |
18 |
function pathResolve(dir: string) { |
|
19 |
return resolve(__dirname, '.', dir); |
|
20 |
} |
|
21 |
|
6f8d75
|
22 |
const root: string = process.cwd(); |
V |
23 |
|
99ac30
|
24 |
export default ({ command, mode }: ConfigEnv): UserConfig => { |
bd7b53
|
25 |
const env = loadEnv(mode, root); |
V |
26 |
const viteEnv = wrapperEnv(env); |
99ac30
|
27 |
const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY, VITE_DROP_CONSOLE, VITE_LEGACY } = viteEnv; |
V |
28 |
|
|
29 |
const isBuild = command === 'build'; |
|
30 |
|
bd7b53
|
31 |
return { |
V |
32 |
root, |
99ac30
|
33 |
alias: { |
V |
34 |
'/@/': `${pathResolve('src')}/`, |
|
35 |
}, |
|
36 |
server: { |
|
37 |
port: VITE_PORT, |
|
38 |
proxy: createProxy(VITE_PROXY), |
|
39 |
hmr: { |
|
40 |
overlay: true, |
bd7b53
|
41 |
}, |
8a1bfd
|
42 |
}, |
99ac30
|
43 |
build: { |
V |
44 |
base: VITE_PUBLIC_PATH, |
|
45 |
terserOptions: { |
|
46 |
compress: { |
|
47 |
keep_infinity: true, |
|
48 |
drop_console: VITE_DROP_CONSOLE, |
|
49 |
}, |
|
50 |
}, |
|
51 |
// minify: 'esbuild', |
|
52 |
rollupOptions: { |
|
53 |
output: { |
|
54 |
compact: true, |
|
55 |
}, |
3509eb
|
56 |
}, |
V |
57 |
commonjsOptions: { |
025ee9
|
58 |
ignore: [ |
V |
59 |
// xlsx |
|
60 |
'fs', |
|
61 |
'crypto', |
|
62 |
'stream', |
|
63 |
], |
99ac30
|
64 |
}, |
V |
65 |
}, |
bd7b53
|
66 |
define: { |
V |
67 |
__VERSION__: pkg.version, |
|
68 |
// setting vue-i18-next |
|
69 |
// Suppress warning |
|
70 |
__VUE_I18N_LEGACY_API__: false, |
|
71 |
__VUE_I18N_FULL_INSTALL__: false, |
|
72 |
__INTLIFY_PROD_DEVTOOLS__: false, |
2f6253
|
73 |
}, |
99ac30
|
74 |
css: { |
V |
75 |
preprocessorOptions: { |
|
76 |
less: { |
|
77 |
modifyVars: { |
3509eb
|
78 |
// reference: Avoid repeated references |
99ac30
|
79 |
hack: `true; @import (reference) "${resolve('src/design/config.less')}";`, |
V |
80 |
...modifyVars, |
|
81 |
}, |
|
82 |
javascriptEnabled: true, |
116a1f
|
83 |
}, |
bd7b53
|
84 |
}, |
V |
85 |
}, |
|
86 |
|
99ac30
|
87 |
plugins: [ |
V |
88 |
vue(), |
|
89 |
vueJsx(), |
|
90 |
...(VITE_LEGACY && isBuild ? [legacy()] : []), |
|
91 |
...createVitePlugins(viteEnv, isBuild, mode), |
737b1b
|
92 |
], |
8a1bfd
|
93 |
|
99ac30
|
94 |
optimizeDeps: { |
3509eb
|
95 |
include: [ |
6392b7
|
96 |
'moment', |
fb57cf
|
97 |
'@ant-design/icons-vue', |
ff2b12
|
98 |
'echarts/map/js/china', |
3509eb
|
99 |
'ant-design-vue/es/locale/zh_CN', |
6392b7
|
100 |
'moment/locale/zh-cn', |
3509eb
|
101 |
'ant-design-vue/es/locale/en_US', |
V |
102 |
], |
bd7b53
|
103 |
}, |
V |
104 |
}; |
6f8d75
|
105 |
}; |