vite.config.ts 2.5 KB
Newer Older
V
vben 已提交
1
import type { UserConfig, Resolver } from 'vite';
陈文彬 已提交
2 3
import { resolve } from 'path';

4 5
import { modifyVars } from './build/config/lessModifyVars';
import { createProxy } from './build/vite/proxy';
V
vben 已提交
6
import { configManualChunk } from './build/vite/optimizer';
V
vben 已提交
7 8 9

import globbyTransform from './build/vite/plugin/transform/globby';
import dynamicImportTransform from './build/vite/plugin/transform/dynamic-import';
10

V
vben 已提交
11
import { loadEnv } from './build/utils';
陈文彬 已提交
12

13
import { createRollupPlugin, createVitePlugins } from './build/vite/plugin';
14 15

const pkg = require('./package.json');
陈文彬 已提交
16

17 18
const viteEnv = loadEnv();

V
vben 已提交
19
const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY, VITE_DROP_CONSOLE, VITE_DYNAMIC_IMPORT } = viteEnv;
陈文彬 已提交
20 21 22 23

function pathResolve(dir: string) {
  return resolve(__dirname, '.', dir);
}
B
bin 已提交
24

V
vben 已提交
25 26 27 28 29 30 31 32
const alias: Record<string, string> = {
  '/@/': pathResolve('src'),
};

const root: string = process.cwd();

const resolvers: Resolver[] = [];

陈文彬 已提交
33
const viteConfig: UserConfig = {
V
vben 已提交
34 35
  root,
  alias,
B
bin 已提交
36
  /**
V
vben 已提交
37
   * port
B
bin 已提交
38 39 40
   * @default '3000'
   */
  port: VITE_PORT,
V
vben 已提交
41

陈文彬 已提交
42
  /**
V
vben 已提交
43
   * Base public path when served in production.
陈文彬 已提交
44 45
   * @default '/'
   */
B
bin 已提交
46
  base: VITE_PUBLIC_PATH,
陈文彬 已提交
47 48

  /**
V
vben 已提交
49
   * Transpile target for esbuild.
V
vben 已提交
50
   * @default 'es2020'
陈文彬 已提交
51
   */
V
vben 已提交
52
  esbuildTarget: 'es2019',
V
vben 已提交
53

V
vben 已提交
54
  // terser options
V
vben 已提交
55
  terserOptions: {
V
vben 已提交
56
    compress: {
V
vben 已提交
57
      keep_infinity: true,
V
vben 已提交
58 59 60
      drop_console: VITE_DROP_CONSOLE,
    },
  },
V
vben 已提交
61

62 63
  define: {
    __VERSION__: pkg.version,
V
vben 已提交
64
    // setting vue-i18-next
V
vben 已提交
65 66 67 68
    // Suppress warning
    __VUE_I18N_LEGACY_API__: false,
    __VUE_I18N_FULL_INSTALL__: false,
    __INTLIFY_PROD_DEVTOOLS__: false,
69
  },
V
vben 已提交
70

陈文彬 已提交
71 72 73 74 75 76
  cssPreprocessOptions: {
    less: {
      modifyVars: modifyVars,
      javascriptEnabled: true,
    },
  },
V
vben 已提交
77

V
vben 已提交
78
  // 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
陈文彬 已提交
79
  optimizeDeps: {
V
vben 已提交
80
    include: [
V
vben 已提交
81
      'qs',
V
vben 已提交
82 83 84 85 86
      'echarts/map/js/china',
      'ant-design-vue/es/locale/zh_CN',
      'ant-design-vue/es/locale/en_US',
      '@ant-design/icons-vue',
    ],
陈文彬 已提交
87
  },
V
vben 已提交
88

V
vben 已提交
89 90
  transforms: [
    globbyTransform({
V
vben 已提交
91 92 93
      resolvers: resolvers,
      root: root,
      alias: alias,
V
vben 已提交
94 95
      includes: [resolve('src/router'), resolve('src/locales')],
    }),
V
vben 已提交
96
    dynamicImportTransform(VITE_DYNAMIC_IMPORT),
V
vben 已提交
97
  ],
V
vben 已提交
98 99 100 101 102 103 104 105 106 107 108 109 110

  proxy: createProxy(VITE_PROXY),

  plugins: createVitePlugins(viteEnv),

  rollupInputOptions: {
    plugins: createRollupPlugin(),
  },

  rollupOutputOptions: {
    compact: true,
    manualChunks: configManualChunk,
  },
V
vben 已提交
111 112 113
};

export default viteConfig;