- 总体配置
- 配置 development 、 production 环境变量
- 基础配置
- 代码压缩
- 提取 CSS 代码
- 添加别名 Alias
- 利用 splitChunks 单独打包第三方模块
- 开启 gzip 压缩
- 为 sass 提供全局样式,以及全局变量
- 为 less 提供全局样式,以及全局变量
- 为 stylus 提供全局变量
- 配置 proxy 代理解决跨域问题
- 添加打包分析
- 外部库使用 CDN 加载 ( 配置 externals)
- 删除 moment 语言包
- 压缩图片
- 预渲染 prerender-spa-plugin
- 添加 IE 兼容
- 去掉 console.log
- 开启 stylelint 检测 scss, css 语法
- 修复 HMR(热更新) 失效
- 修复 Lazy loading routes Error: Cyclic dependency vuejs/vue-cli#1669
- 自动生成雪碧图
- SVG 转 font 字体
- 使用 SVG 组件
- 去除多余无效的 CSS
- 多页面打包 multi-page
- 静态资源自动打包上传阿里 oss、华为 obs
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
总体配置
// vue.config.js
const path = require('path')
const resolve = dir =path.join(__dirname, dir)
const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV)
module.exports = {
publicPath: './', // 编译后的地址,可以根据环境进行设置
// assetsDir: 'assets', // 静态文件目录
// outputDir:"dist", // 输出目录
lintOnSave: true, // 是否开启编译时是否不符合 eslint 提示
productionSourceMap: !IS_PROD, // 生产环境的 source map
parallel: require('os').cpus().length 1,
css: {
extract: IS_PROD, // 提取 css 代码
sourceMap: false,
},
chainWebpack: config ={
// 代码压缩
config.optimization.minimize(true)
// 代码分割
if (IS_PROD) {
config.optimization.delete('splitChunks')
}
// 项目目录别名 ( src 目录配置为 @ )
config.resolve.alias
.set('@', resolve('src'))
.set("vue$", "vue/dist/vue.esm.js")
return config
},
configureWebpack: config ={
if (IS_PROD) {
config.optimization = {
splitChunks: {
cacheGroups: {
common: {
name: "chunk-common",
chunks: "initial",
minChunks: 2,
maxInitialRequests: 5,
minSize: 0,
priority: 1,
reuseExistingChunk: true,
enforce: true
},
vendors: {
name: "chunk-vendors",
test: /[\\/]node_modules[\\/]/,
chunks: "initial",
priority: 2,
reuseExistingChunk: true,
enforce: true
},
elementUI: {
name: "chunk-elementui",
test: /[\\/]node_modules[\\/]element-ui[\\/]/,
chunks: "all",
priority: 3,
reuseExistingChunk: true,
enforce: true
},
echarts: {
name: "chunk-echarts",
test: /[\\/]node_modules[\\/](vue-)?echarts[\\/]/,
chunks: "all",
priority: 4,
reuseExistingChunk: true,
enforce: true
}
}
}
};
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论