const path = require('path') const AutoImport = require('unplugin-auto-import/webpack') const Components = require('unplugin-vue-components/webpack') const { ElementPlusResolver } = require('unplugin-vue-components/resolvers') const { defineConfig } = require('@vue/cli-service') const { DefinePlugin } = require('webpack') const { execSync } = require('child_process') const commitInfo = execSync('git show -s --format=%cs(%h)').toString().trim() module.exports = defineConfig({ publicPath: './', transpileDependencies: true, productionSourceMap: false, configureWebpack: { resolve: { alias: { '@': path.resolve(__dirname, './src') } }, plugins: [ AutoImport({ resolvers: [ElementPlusResolver()], }), Components({ resolvers: [ElementPlusResolver()], }), new DefinePlugin({ 'process.env.VERSION': `'${commitInfo}'` }) ] }, chainWebpack: config => { // fork-ts-checker-webpack-plugin v6 与 TypeScript 5 不兼容(无法覆写只读的 performance.mark) // 类型检查改由 tsc --noEmit 承担 config.plugins.delete('fork-ts-checker') // Element Plus 按需导入时,不同路由 chunk 的 CSS 导入顺序不一致, // 但这不影响最终样式(specificity 规则优先),忽略该警告 config.plugin('extract-css').tap(args => { args[0].ignoreOrder = true return args }) }, devServer: { port: 8080, proxy: { '^/api': { target: process.env.VUE_APP_PROXY_TARGET, changeOrigin: true } } } })