81 lines
2.2 KiB
JavaScript
81 lines
2.2 KiB
JavaScript
const { defineConfig } = require('@vue/cli-service');
|
||
const path = require('path');
|
||
|
||
module.exports = defineConfig({
|
||
// 基础路径(根据你的部署环境调整)
|
||
publicPath: './',
|
||
// 输出目录
|
||
outputDir: 'dist',
|
||
// 静态资源目录
|
||
assetsDir: 'static',
|
||
// 关闭 eslint 校验(可选,根据项目需求)
|
||
lintOnSave: false,
|
||
// webpack 配置
|
||
configureWebpack: {
|
||
// 配置路径别名(和 Vite 的 alias 功能一致)
|
||
resolve: {
|
||
alias: {
|
||
'@': path.resolve(__dirname, 'src'),
|
||
'@/components': path.resolve(__dirname, 'src/components'),
|
||
'@/utils': path.resolve(__dirname, 'src/utils')
|
||
}
|
||
},
|
||
// 优化打包(可选)
|
||
optimization: {
|
||
minimizer: [
|
||
// 已安装 terser,可配置压缩
|
||
require('terser-webpack-plugin')({
|
||
terserOptions: {
|
||
compress: {
|
||
drop_console: process.env.NODE_ENV === 'production', // 生产环境移除 console
|
||
drop_debugger: true // 移除 debugger
|
||
}
|
||
}
|
||
})
|
||
]
|
||
},
|
||
// 解决可能的依赖冲突
|
||
resolve: {
|
||
extensions: ['.vue', '.js', '.jsx', '.json'],
|
||
fallback: {
|
||
"crypto": require.resolve("crypto-js"),
|
||
"text-encoding": require.resolve("text-encoding")
|
||
}
|
||
}
|
||
},
|
||
// 链式修改 webpack 配置
|
||
chainWebpack: config => {
|
||
// 处理 Vue 文件
|
||
config.module
|
||
.rule('vue')
|
||
.test(/\.vue$/)
|
||
.use('vue-loader')
|
||
.loader('vue-loader')
|
||
.end();
|
||
|
||
// 处理 SCSS(项目依赖了 sass,需配置 loader)
|
||
config.module
|
||
.rule('scss')
|
||
.test(/\.scss$/)
|
||
.use('sass-loader')
|
||
.loader('sass-loader')
|
||
.options({
|
||
implementation: require('sass')
|
||
})
|
||
.end();
|
||
},
|
||
// 环境变量配置(适配你的多环境脚本)
|
||
devServer: {
|
||
// 开发服务器配置(如代理、端口等)
|
||
port: 8080,
|
||
open: true,
|
||
proxy: {
|
||
// 示例:配置接口代理(根据你的项目需求调整)
|
||
'/api': {
|
||
target: 'https://your-api-domain.com',
|
||
changeOrigin: true,
|
||
pathRewrite: { '^/api': '' }
|
||
}
|
||
}
|
||
}
|
||
}); |