提交 | 用户 | 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 |
|
3d1681
|
9 |
import { generateModifyVars } from './build/config/themeConfig'; |
173d40
|
10 |
import { createProxy } from './build/vite/proxy'; |
bd7b53
|
11 |
import { wrapperEnv } from './build/utils'; |
99ac30
|
12 |
import { createVitePlugins } from './build/vite/plugin'; |
759e53
|
13 |
import { OUTPUT_DIR } from './build/constant'; |
173d40
|
14 |
|
bb3b8f
|
15 |
const pkg = require('./package.json'); |
2f6253
|
16 |
|
陈 |
17 |
function pathResolve(dir: string) { |
|
18 |
return resolve(__dirname, '.', dir); |
|
19 |
} |
|
20 |
|
759e53
|
21 |
const root = process.cwd(); |
6f8d75
|
22 |
|
99ac30
|
23 |
export default ({ command, mode }: ConfigEnv): UserConfig => { |
bd7b53
|
24 |
const env = loadEnv(mode, root); |
V |
25 |
const viteEnv = wrapperEnv(env); |
99ac30
|
26 |
const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY, VITE_DROP_CONSOLE, VITE_LEGACY } = viteEnv; |
V |
27 |
|
|
28 |
const isBuild = command === 'build'; |
|
29 |
|
bd7b53
|
30 |
return { |
f24422
|
31 |
base: VITE_PUBLIC_PATH, |
bd7b53
|
32 |
root, |
9edc28
|
33 |
alias: [ |
V |
34 |
{ |
|
35 |
find: /^\/@\//, |
|
36 |
replacement: pathResolve('src') + '/', |
|
37 |
}, |
|
38 |
], |
99ac30
|
39 |
server: { |
V |
40 |
port: VITE_PORT, |
|
41 |
proxy: createProxy(VITE_PROXY), |
|
42 |
hmr: { |
|
43 |
overlay: true, |
bd7b53
|
44 |
}, |
8a1bfd
|
45 |
}, |
1b71db
|
46 |
|
99ac30
|
47 |
build: { |
759e53
|
48 |
outDir: OUTPUT_DIR, |
7385ce
|
49 |
polyfillDynamicImport: VITE_LEGACY, |
99ac30
|
50 |
terserOptions: { |
V |
51 |
compress: { |
|
52 |
keep_infinity: true, |
|
53 |
drop_console: VITE_DROP_CONSOLE, |
|
54 |
}, |
|
55 |
}, |
1b71db
|
56 |
brotliSize: false, |
3ba828
|
57 |
chunkSizeWarningLimit: 1200, |
99ac30
|
58 |
}, |
bd7b53
|
59 |
define: { |
V |
60 |
__VERSION__: pkg.version, |
|
61 |
// setting vue-i18-next |
|
62 |
// Suppress warning |
|
63 |
__VUE_I18N_LEGACY_API__: false, |
|
64 |
__VUE_I18N_FULL_INSTALL__: false, |
|
65 |
__INTLIFY_PROD_DEVTOOLS__: false, |
2f6253
|
66 |
}, |
99ac30
|
67 |
css: { |
V |
68 |
preprocessorOptions: { |
|
69 |
less: { |
|
70 |
modifyVars: { |
3509eb
|
71 |
// reference: Avoid repeated references |
99ac30
|
72 |
hack: `true; @import (reference) "${resolve('src/design/config.less')}";`, |
3d1681
|
73 |
...generateModifyVars(), |
99ac30
|
74 |
}, |
V |
75 |
javascriptEnabled: true, |
116a1f
|
76 |
}, |
bd7b53
|
77 |
}, |
V |
78 |
}, |
|
79 |
|
99ac30
|
80 |
plugins: [ |
V |
81 |
vue(), |
|
82 |
vueJsx(), |
|
83 |
...(VITE_LEGACY && isBuild ? [legacy()] : []), |
9edc28
|
84 |
...createVitePlugins(viteEnv, isBuild), |
737b1b
|
85 |
], |
8a1bfd
|
86 |
|
99ac30
|
87 |
optimizeDeps: { |
9edc28
|
88 |
include: ['@iconify/iconify'], |
bd7b53
|
89 |
}, |
V |
90 |
}; |
6f8d75
|
91 |
}; |