You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
7.0 KiB
196 lines
7.0 KiB
import { UserConfig, ConfigEnv, loadEnv, defineConfig } from 'vite';
|
|
import legacy from '@vitejs/plugin-legacy';
|
|
|
|
import createPlugins from './vite/plugins';
|
|
import { babel } from '@rollup/plugin-babel';
|
|
|
|
import path from 'path';
|
|
export default defineConfig(({ mode, command }: ConfigEnv): UserConfig => {
|
|
const env = loadEnv(mode, process.cwd());
|
|
return {
|
|
// 部署生产环境和开发环境下的URL。
|
|
// 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
|
|
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
|
|
base: env.VITE_APP_CONTEXT_PATH,
|
|
resolve: {
|
|
alias: {
|
|
'~': path.resolve(__dirname, './'),
|
|
'@': path.resolve(__dirname, './src')
|
|
},
|
|
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
|
|
},
|
|
// https://cn.vitejs.dev/config/#resolve-extensions
|
|
plugins: [
|
|
createPlugins(env, command === 'build'),
|
|
babel({
|
|
babelHelpers: 'runtime',
|
|
exclude: 'node_modules/**',
|
|
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
|
presets: [
|
|
['@babel/preset-env', {
|
|
targets: {
|
|
browsers: [
|
|
'IE 11',
|
|
'Safari 9',
|
|
'Chrome 49',
|
|
'Firefox 52',
|
|
'Edge 17'
|
|
]
|
|
},
|
|
useBuiltIns: 'usage',
|
|
corejs: { version: 3, proposals: true }
|
|
}],
|
|
],
|
|
plugins: [
|
|
'@babel/plugin-transform-regenerator',
|
|
['@babel/plugin-transform-runtime', {
|
|
corejs: 3,
|
|
helpers: true,
|
|
regenerator: true
|
|
}],
|
|
'@babel/plugin-proposal-optional-chaining',
|
|
'@babel/plugin-proposal-nullish-coalescing-operator'
|
|
]
|
|
}),
|
|
// legacy({
|
|
// targets: [
|
|
// 'ie >= 11',
|
|
// 'safari >= 9',
|
|
// 'chrome >= 49',
|
|
// 'firefox >= 52',
|
|
// 'edge >= 17'
|
|
// ]
|
|
// })
|
|
],
|
|
server: {
|
|
host: '0.0.0.0',
|
|
port: Number(env.VITE_APP_PORT),
|
|
open: true,
|
|
proxy: {
|
|
[env.VITE_APP_BASE_API]: {
|
|
target: 'http://localhost:8080',
|
|
changeOrigin: true,
|
|
ws: true,
|
|
rewrite: (path) => {
|
|
if (path.startsWith(env.VITE_APP_BASE_API)) {
|
|
return path.substring(env.VITE_APP_BASE_API.length);
|
|
}
|
|
return path;
|
|
}
|
|
}
|
|
}
|
|
},
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
javascriptEnabled: true
|
|
}
|
|
},
|
|
postcss: {
|
|
plugins: [
|
|
{
|
|
postcssPlugin: 'internal:charset-removal',
|
|
AtRule: {
|
|
charset: (atRule) => {
|
|
if (atRule.name === 'charset') {
|
|
atRule.remove();
|
|
}
|
|
}
|
|
},
|
|
}
|
|
]
|
|
}
|
|
},
|
|
// 预编译
|
|
optimizeDeps: {
|
|
include: [
|
|
'vue',
|
|
'vue-router',
|
|
'pinia',
|
|
'axios',
|
|
'@vueuse/core',
|
|
'echarts',
|
|
'vue-i18n',
|
|
'@vueup/vue-quill',
|
|
'bpmn-js/lib/Viewer',
|
|
'bpmn-js/lib/Modeler.js',
|
|
'bpmn-js-properties-panel',
|
|
'min-dash',
|
|
'diagram-js/lib/navigation/movecanvas',
|
|
'diagram-js/lib/navigation/zoomscroll',
|
|
'bpmn-js/lib/features/palette/PaletteProvider',
|
|
'bpmn-js/lib/features/context-pad/ContextPadProvider',
|
|
'diagram-js/lib/draw/BaseRenderer',
|
|
'tiny-svg',
|
|
'image-conversion',
|
|
|
|
'element-plus/es/components/text/style/css',
|
|
'element-plus/es/components/collapse-item/style/css',
|
|
'element-plus/es/components/collapse/style/css',
|
|
'element-plus/es/components/space/style/css',
|
|
'element-plus/es/components/container/style/css',
|
|
'element-plus/es/components/aside/style/css',
|
|
'element-plus/es/components/main/style/css',
|
|
'element-plus/es/components/header/style/css',
|
|
'element-plus/es/components/button-group/style/css',
|
|
'element-plus/es/components/radio-button/style/css',
|
|
'element-plus/es/components/checkbox-group/style/css',
|
|
'element-plus/es/components/form/style/css',
|
|
'element-plus/es/components/form-item/style/css',
|
|
'element-plus/es/components/button/style/css',
|
|
'element-plus/es/components/input/style/css',
|
|
'element-plus/es/components/input-number/style/css',
|
|
'element-plus/es/components/switch/style/css',
|
|
'element-plus/es/components/upload/style/css',
|
|
'element-plus/es/components/menu/style/css',
|
|
'element-plus/es/components/col/style/css',
|
|
'element-plus/es/components/icon/style/css',
|
|
'element-plus/es/components/row/style/css',
|
|
'element-plus/es/components/tag/style/css',
|
|
'element-plus/es/components/dialog/style/css',
|
|
'element-plus/es/components/loading/style/css',
|
|
'element-plus/es/components/radio/style/css',
|
|
'element-plus/es/components/radio-group/style/css',
|
|
'element-plus/es/components/popover/style/css',
|
|
'element-plus/es/components/scrollbar/style/css',
|
|
'element-plus/es/components/tooltip/style/css',
|
|
'element-plus/es/components/dropdown/style/css',
|
|
'element-plus/es/components/dropdown-menu/style/css',
|
|
'element-plus/es/components/dropdown-item/style/css',
|
|
'element-plus/es/components/sub-menu/style/css',
|
|
'element-plus/es/components/menu-item/style/css',
|
|
'element-plus/es/components/divider/style/css',
|
|
'element-plus/es/components/card/style/css',
|
|
'element-plus/es/components/link/style/css',
|
|
'element-plus/es/components/breadcrumb/style/css',
|
|
'element-plus/es/components/breadcrumb-item/style/css',
|
|
'element-plus/es/components/table/style/css',
|
|
'element-plus/es/components/tree-select/style/css',
|
|
'element-plus/es/components/table-column/style/css',
|
|
'element-plus/es/components/select/style/css',
|
|
'element-plus/es/components/option/style/css',
|
|
'element-plus/es/components/pagination/style/css',
|
|
'element-plus/es/components/tree/style/css',
|
|
'element-plus/es/components/alert/style/css',
|
|
'element-plus/es/components/checkbox/style/css',
|
|
'element-plus/es/components/date-picker/style/css',
|
|
'element-plus/es/components/transfer/style/css',
|
|
'element-plus/es/components/tabs/style/css',
|
|
'element-plus/es/components/image/style/css',
|
|
'element-plus/es/components/tab-pane/style/css'
|
|
],
|
|
exclude: ['highlight.js']
|
|
},
|
|
build: {
|
|
target: 'es2015',
|
|
cssTarget: 'chrome49', // 为CSS添加必要的前缀以支持旧浏览器
|
|
minify: 'terser',
|
|
terserOptions: {
|
|
compress: {
|
|
drop_console: true,
|
|
drop_debugger: true
|
|
}
|
|
}
|
|
}
|
|
};
|
|
});
|
|
|