Files
ebiz-sunful-eco-web/vue.config.js
陈昱达 79e445bada feat(nav): 优化导航栏并更新路由跳转方式
- 在 logo 图片上添加点击事件,跳转到首页
- 将路由跳转方法从 push 改为 replace,避免重复记录历史- 调整 logo 图片样式,增加光标和显示方式
- 修改项目 publicPath 为当前目录,优化开发和部署流程
2025-07-08 11:59:33 +08:00

133 lines
4.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use strict'
const path = require('path')
const defaultSettings = require('./src/assets/js/utils/settings.js')
const CompressionPlugin = require('compression-webpack-plugin')
function resolve(dir) {
return path.join(__dirname, dir)
}
const name = defaultSettings.title || 'basic-pc' // 页面标题
//如果您的端口设置为80
//使用管理员权限执行命令行。
//例如Macsudo npm run
//您可以通过以下方法更改端口:
// port = 9527 npm run dev或npm run dev --port = 9527
const port = process.env.port || process.env.npm_config_port || 7006 //开发端口
console.log(process.env.VUE_APP_AUTH)
//所有配置项说明都可以在https://cli.vuejs.org/config/ 中找到
module.exports = {
runtimeCompiler: true,
/*如果您打算在子路径下部署站点则需要设置publicPath
例如GitHub Pages。如果您打算将网站部署到https://foo.github.io/bar/
然后publicPath应该设置为“ / bar /”。
在大多数情况下,请使用'/'
详细信息https://cli.vuejs.org/config/#publicpath
*/
publicPath: '.',
outputDir: 'dist',
assetsDir: 'static',
lintOnSave: process.env.NODE_ENV === 'development',
productionSourceMap: false,
devServer: {
port: port,
host: '0.0.0.0',
open: true,
overlay: {
warnings: false,
errors: true
}
},
configureWebpack: {
//在webpack的名称字段中提供应用程序的标题以便
//可以在index.html中对其进行访问以注入正确的标题。
name: name,
resolve: {
alias: {
'@': resolve('src')
}
},
plugins: [
new CompressionPlugin({
filename: '[path][base].gz', // 输出的.gz文件名
algorithm: 'gzip', // 使用 gzip 压缩
test: /\.(js|css|html|svg)$/, // 匹配需要压缩的文件类型
threshold: 10240, // 只有大小大于该值的资源会被压缩(单位:字节)
minRatio: 0.8 // 压缩率小于这个值的资源不压缩
})
]
},
chainWebpack(config) {
config.plugins.delete('preload') // TODO: 需要测试
config.plugins.delete('prefetch') // TODO: 需要测试
//设置svg-sprite-loader
config.module
.rule('svg')
.exclude.add(resolve('src/icons'))
.end()
config.module
.rule('icons')
.test(/\.svg$/)
.include.add(resolve('src/icons'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
.end()
//设置preserveWhitespace
config.module
.rule('vue')
.use('vue-loader')
.loader('vue-loader')
.tap(options => {
options.compilerOptions.preserveWhitespace = true
return options
})
.end()
// https://webpack.js.org/configuration/devtool/#development
config.when(process.env.NODE_ENV === 'development', config => config.devtool('cheap-source-map'))
config.when(process.env.NODE_ENV !== 'development', config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [
{
//`runtime`必须与runtimeChunk名称相同。默认是“运行时”
inline: /runtime\..*\.js$/
}
])
.end()
config.optimization.splitChunks({
chunks: 'all',
minSize: 3000,
maxSize: 6000,
maxInitialRequests: 3,
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' //仅打包最初依赖的第三方
},
elementUI: {
name: 'chunk-elementUI', //将elementUI拆分为一个包
priority: 20, //权重必须大于libs和app否则将打包到libs或app中
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ //为了适应cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), //可以自定义规则
minChunks: 3, //最小公用数
priority: 5,
reuseExistingChunk: true
}
}
})
config.optimization.runtimeChunk('single')
})
}
}