vben
2021-01-19 b45f8c5021a4225026ed698c083a1af42a08faff
提交 | 用户 | 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 };