Files
xlxumu/mini_program/vue.config.js

142 lines
3.0 KiB
JavaScript

const path = require('path')
module.exports = {
// 基础路径
publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
// 输出目录
outputDir: 'dist',
// 静态资源目录
assetsDir: 'static',
// 生产环境是否生成 sourceMap 文件
productionSourceMap: false,
// 开发服务器配置
devServer: {
port: 8080,
open: true,
overlay: {
warnings: false,
errors: true
},
proxy: {
'/api': {
target: process.env.VUE_APP_API_BASE_URL || 'http://localhost:3000',
changeOrigin: true,
pathRewrite: {
'^/api': '/api'
}
}
}
},
// 配置别名
configureWebpack: {
resolve: {
alias: {
'@': path.resolve(__dirname, 'src'),
'@common': path.resolve(__dirname, 'common'),
'@components': path.resolve(__dirname, 'common/components'),
'@utils': path.resolve(__dirname, 'common/utils'),
'@config': path.resolve(__dirname, 'common/config'),
'@static': path.resolve(__dirname, 'static')
}
},
// 性能优化
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
vendor: {
name: 'vendor',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial'
},
common: {
name: 'common',
minChunks: 2,
priority: 5,
chunks: 'initial',
reuseExistingChunk: true
}
}
}
}
},
// CSS 相关配置
css: {
loaderOptions: {
sass: {
// 全局样式变量
additionalData: `
@import "@/common/styles/variables.scss";
@import "@/common/styles/mixins.scss";
`
}
}
},
// 链式操作配置
chainWebpack: config => {
// 移除 prefetch 插件
config.plugins.delete('prefetch')
// 移除 preload 插件
config.plugins.delete('preload')
// 图片压缩
config.module
.rule('images')
.test(/\.(gif|png|jpe?g|svg)$/i)
.use('image-webpack-loader')
.loader('image-webpack-loader')
.options({
mozjpeg: {
progressive: true,
quality: 80
},
optipng: {
enabled: false
},
pngquant: {
quality: [0.65, 0.90],
speed: 4
},
gifsicle: {
interlaced: false
}
})
.end()
},
// 第三方插件配置
pluginOptions: {
// uni-app 插件配置
'uni-app': {
// 自定义配置
}
},
// 环境变量配置
runtimeCompiler: true,
// 并行处理
parallel: require('os').cpus().length > 1,
// PWA 配置
pwa: {
name: '智慧畜牧管理系统',
themeColor: '#2E8B57',
msTileColor: '#2E8B57',
appleMobileWebAppCapable: 'yes',
appleMobileWebAppStatusBarStyle: 'black',
workboxPluginMode: 'InjectManifest',
workboxOptions: {
swSrc: 'src/sw.js'
}
}
}