整理项目中vue.config.js打包优化配置方法

 更新时间:2023年02月17日 10:11:15   作者:牛先森家的牛奶  
这篇文章主要介绍了整理项目中vue.config.js打包优化,包括配置 webpack-bundle-analyzer 插件查看文件大小及配置compression-webpack-plugin 用gzip压缩打包的文件大小,本文结合实例代码介绍的非常详细,需要的朋友可以参考下

整理项目中vue.config.js打包优化

配置 webpack-bundle-analyzer 插件查看文件大小

安装:

npm intall webpack-bundle-analyzer –save-dev

使用:

// 1、第一种 运行时可以查看
module.exports = {
    chainWebpack: config => {
        config
            .plugin('webpack-bundle-analyzer')
            .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
    }
}

// 2、第二种 打包完可以查看
module.exports = {
	// 配置
	chainWebpack: config => {
			// 添加可视化工具 - 查看打包后的文件大小!
			if (process.env.NODE_ENV === 'production') {
			if (process.env.npm_config_report) {
				config
					.plugin('webpack-bundle-analyzer')
					.use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
					.end();
				config.plugins.delete('prefetch')
			}
		}
	},
}

运行:

npm run build --report

// 不同环境
npm run build:test --report
npm run build:prod --report

效果:

配置compression-webpack-plugin 用gzip压缩打包的文件大小

安装:

npm i compression-webpack-plugin@5.0.1  // 版本问题注意

使用

var path = require('path')
var webpack = require('webpack')
// 压缩
const CompressionPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i;
function resolve (dir) {
	return path.join(__dirname, dir)
}
module.exports = {
	chainWebpack: config => {
		if (process.env.NODE_ENV === 'production') {
			config.plugin('compressionPlugin')
				.use(new CompressionPlugin({
					filename: '[path].gz[query]',
					algorithm: 'gzip', // 使用gzip压缩
					test: productionGzipExtensions, // 匹配文件名
					threshold: 10240, // 对超过10k的数据压缩
					minRatio: 0.8, // 压缩率小于0.8才会压缩
					deleteOriginalAssets: true // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件)
				}));
		}
	},
}

配置uglifyjs-webpack-plugin 压缩js代码

安装:

npm i uglifyjs-webpack-plugin --save-dev

使用:

// 代码压缩
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

module.exports = {
	configureWebpack: {
		// 优化
		optimization: {
			minimizer: [
				new UglifyJsPlugin({
					uglifyOptions: {
						output: { // 删除注释
							comments: false
						},
						//生产环境自动删除console
						compress: {
							//warnings: false, // 若打包错误,则注释这行
							drop_debugger: true,  //清除 debugger 语句
							drop_console: true,   //清除console语句
							pure_funcs: ['console.log']
						}
					},
					sourceMap: false,
					parallel: true
				})
			]
		},
	},
}

配置 image-webpack-loader 图片的压缩

安装:

npm i image-webpack-loader -D

使用:

module.exports = {
	chainWebpack: config => {
		// 图片压缩
		config.module
			.rule('images')
			.exclude.add(resolve('src/assets/icons')) // 排除icons目录,这些图标已用 svg-sprite-loader 处理,打包成 svg-sprite 了
			.end()
			.use('url-loader')
			.tap(options => ({
				limit: 10240, // 稍微改大了点
				fallback: {
					loader: require.resolve('file-loader'),
					options: {
						// 在这里修改file-loader的配置
						// 直接把outputPath的目录加上,虽然语义没分开清晰但比较简洁
						name: 'static/img/[name].[hash:8].[ext]',
						esModule: false, //低版本默认为false,高版本默认为true 这里为6.2.0为高本版本所以要手动设置为false
					}
				}
			}))
			.end()
			.use('image-webpack-loader')
			.loader('image-webpack-loader')
			.options({
				mozjpeg: { progressive: true, quality: 50 }, // 压缩JPEG图像
				optipng: { enabled: true }, // 压缩PNG图像
				pngquant: { quality: [0.5, 0.65], speed: 4 }, // 压缩PNG图像
				gifsicle: { interlaced: false } // 压缩GIF图像
			})
			.end()
			.enforce('post') // 表示先执行配置在下面那个loader,即image-webpack-loader
	},
}

配置 css

参考文章:

vue-cli4之vue.config.js打包优化
vue-cli3.0配置 webpack-bundle-analyzer 插件
vue-cliI 中CSS 相关配置项

到此这篇关于整理项目中vue.config.js打包优化的文章就介绍到这了,更多相关vue.config.js打包优化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vuejs第十篇之vuejs父子组件通信

    Vuejs第十篇之vuejs父子组件通信

    这篇文章主要介绍了Vuejs第十篇之vuejs父子组件通信的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • vue仿ios列表左划删除

    vue仿ios列表左划删除

    这篇文章主要为大家详细介绍了vue仿ios列表左划删除,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Vue2中项目打包优化的方法详解

    Vue2中项目打包优化的方法详解

    这篇文章主要为大家详细介绍了vue2项目的打包优化方法,包括减少打包代码体积和提升编译时间等,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • vue源码nextTick使用及原理解析

    vue源码nextTick使用及原理解析

    这篇文章主要介绍了vue源码nextTick使用及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • vue实现购物车结算功能

    vue实现购物车结算功能

    这篇文章主要为大家详细介绍了vue实现购物车结算功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • 详解Vue中使用Echarts的两种方式

    详解Vue中使用Echarts的两种方式

    这篇文章主要介绍了Vue中使用Echarts的两种方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • Vue+axios实现统一接口管理的方法

    Vue+axios实现统一接口管理的方法

    这篇文章主要介绍了Vue+axios实现统一接口管理的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • vue.js指令v-model使用方法

    vue.js指令v-model使用方法

    这篇文章主要为大家详细介绍了vue.js指令v-model的使用方法 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Vue.js实现的计算器功能完整示例

    Vue.js实现的计算器功能完整示例

    这篇文章主要介绍了Vue.js实现的计算器功能,结合完整实例形式分析了vue.js响应鼠标事件实现基本的数值运算相关操作技巧,可实现四则运算及乘方、开方等功能,需要的朋友可以参考下
    2018-07-07
  • 使用Vue和ECharts创建交互式图表的代码示例

    使用Vue和ECharts创建交互式图表的代码示例

    在现代 Web 应用中,数据可视化是一个重要的组成部分,它不仅能够帮助用户更好地理解复杂的数据,还能提升用户体验,本文给大家使用Vue和ECharts创建交互式图表的示例,需要的朋友可以参考下
    2024-11-11

最新评论