From fa3ac93010bea3805438ee3ab0a182bfbf7423da Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期一, 27 五月 2024 16:19:31 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- vite.config.ts | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 106 insertions(+), 0 deletions(-) diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..9e74fe7 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,106 @@ +import type { UserConfig, ConfigEnv } from 'vite' +import pkg from './package.json' +import dayjs from 'dayjs' +import { loadEnv } from 'vite' +import { resolve } from 'path' +import { generateModifyVars } from './build/generate/generateModifyVars' +import { createProxy } from './build/vite/proxy' +import { wrapperEnv } from './build/utils' +import { createVitePlugins } from './build/vite/plugin' +import { OUTPUT_DIR } from './build/constant' + +function pathResolve(dir: string) { + return resolve(process.cwd(), '.', dir) +} + +const { dependencies, devDependencies, name, version } = pkg +const __APP_INFO__ = { + pkg: { dependencies, devDependencies, name, version }, + lastBuildTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), +} + +export default ({ command, mode }: ConfigEnv): UserConfig => { + const root = process.cwd() + + const env = loadEnv(mode, root) + + // The boolean type read by loadEnv is a string. This function can be converted to boolean type + const viteEnv = wrapperEnv(env) + + const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY, VITE_DROP_CONSOLE } = viteEnv + + const isBuild = command === 'build' + + return { + base: VITE_PUBLIC_PATH, + root, + resolve: { + alias: [ + { + find: 'vue-i18n', + replacement: 'vue-i18n/dist/vue-i18n.cjs.js', + }, + // /@/xxxx => src/xxxx + { + find: /\/@\//, + replacement: pathResolve('src') + '/', + }, + // /#/xxxx => types/xxxx + { + find: /\/#\//, + replacement: pathResolve('types') + '/', + }, + ], + }, + server: { + // Listening on all local IPs + host: true, + https: false, + port: VITE_PORT, + // Load proxy configuration from .env + proxy: createProxy(VITE_PROXY), + }, + build: { + minify: 'esbuild', + target: 'es2015', + cssTarget: 'chrome80', + outDir: OUTPUT_DIR, + terserOptions: { + compress: { + keep_infinity: true, + // Used to delete console in production environment + drop_console: VITE_DROP_CONSOLE, + drop_debugger: true, + }, + }, + // Turning off brotliSize display can slightly reduce packaging time + reportCompressedSize: false, + chunkSizeWarningLimit: 2000, + }, + define: { + // setting vue-i18-next + // Suppress warning + __INTLIFY_PROD_DEVTOOLS__: false, + __APP_INFO__: JSON.stringify(__APP_INFO__), + }, + css: { + preprocessorOptions: { + less: { + modifyVars: generateModifyVars(), + javascriptEnabled: true, + }, + }, + }, + + // The vite plugin used by the project. The quantity is large, so it is separately extracted and managed + plugins: createVitePlugins(viteEnv, isBuild), + + optimizeDeps: { + esbuildOptions: { + target: 'es2020', + }, + // @iconify/iconify: The dependency is dynamically and virtually loaded by @purge-icons/generated, so it needs to be specified explicitly + include: ['@vue/runtime-core', '@vue/shared', '@iconify/iconify', 'ant-design-vue/es/locale/zh_CN', 'ant-design-vue/es/locale/en_US'], + }, + } +} -- Gitblit v1.9.3