/* * vite配置 * * @Author: DCCloud * @Date: 2022-05-02 23:44:56 */ import { resolve } from 'path'; import vue from '@vitejs/plugin-vue'; import vueJsx from '@vitejs/plugin-vue-jsx'; import customVariables from '/@/theme/custom-variables.js'; import tailwindcss from '@tailwindcss/vite' const pathResolve = (dir) => { return resolve(__dirname, '.', dir); }; export default { base: process.env.NODE_ENV === 'production' ? '/' : '/', root: process.cwd(), resolve: { alias: [ // 国际化替换 { find: 'vue-i18n', replacement: 'vue-i18n/dist/vue-i18n.cjs.js', }, // 绝对路径重命名:/@/xxxx => src/xxxx { find: /\/@\//, replacement: pathResolve('src') + '/', }, { find: /^~/, replacement: '', }, ], }, // 服务端渲染 server: { host: '0.0.0.0', port: 8081, proxy: { '/api': { target: 'http://localhost:2024', // target: 'http://192.168.17.209:2024', changeOrigin: true, ws: true, rewrite: (path) => path.replace(new RegExp(`^/api`), ''), // only https // secure: false }, '/base-api': { // 用于基础 target: 'http://localhost:2025', // target: 'http://192.168.17.209:2024', changeOrigin: true, ws: true, rewrite: (path) => path.replace(new RegExp(`^/base-api`), ''), } }, open: true, // 项目启动后,自动打开 }, plugins: [vue(), vueJsx({}), tailwindcss()], optimizeDeps: { include: ['ant-design-vue/es/locale/zh_CN', 'dayjs/locale/zh-cn', 'ant-design-vue/es/locale/en_US'], exclude: ['vue-demi'], }, build: { // 清除console和debugger terserOptions: { compress: { drop_console: true, drop_debugger: true, }, }, rollupOptions: { output: { //配置这个是让不同类型文件放在不同文件夹,不会显得太乱 chunkFileNames: 'js/[name]-[hash].js', entryFileNames: 'js/[name]-[hash].js', assetFileNames: '[ext]/[name]-[hash].[ext]', manualChunks(id) { //静态资源分拆打包 if (id.includes('node_modules')) { return id.toString().split('node_modules/')[1].split('/')[0].toString(); } }, }, // external: [ // '@antv/x6', // '@antv/x6-plugin-stencil', // '@antv/x6-plugin-keyboard', // '@antv/x6-plugin-scroller', // '@antv/x6-plugin-selection', // '@antv/x6-plugin-history', // '@antv/x6-plugin-clipboard', // '@antv/x6-plugin-minimap', // '@antv/x6-plugin-snapline', // '@antv/x6-plugin-export' // ], }, target: 'modules', outDir: 'dist', // 指定输出路径 assetsDir: 'assets', // 指定生成静态文件目录 assetsInlineLimit: '4096', // 小于此阈值的导入或引用资源将内联为 base64 编码 chunkSizeWarningLimit: 500, // chunk 大小警告的限制 minify: 'terser', // 混淆器,terser构建后文件体积更小 emptyOutDir: true, //打包前先清空原有打包文件 }, css: { preprocessorOptions: { less: { modifyVars: customVariables, javascriptEnabled: true, }, }, }, define: { __INTLIFY_PROD_DEVTOOLS__: false, 'process.env': process.env, }, };