【前端】-vue-对打包的静态文件进行压缩

文章介绍了如何通过在Vue项目中安装和配置`compression-webpack-plugin`以及`image-webpack-loader`来压缩js、css、html文件和图片资源,从而减小文件大小,提高页面加载速度。在打包过程中,对超过10kb的文件进行gzip压缩,并且在生产环境关闭prefetch功能。同时,对于图片资源,执行npmrunbuild后会自动进行压缩处理。

通过 npm run build 打包时候,会发现静态文件很大,放在nginx服务中访问页面会很慢,所以可在打包过程中对静态文件再压缩。

对js、css、html等文件进行压缩:

  • 安装插件 “compression-webpack-plugin” 。(我本地版本: cnpm install compression-webpack-plugin@5.0.1)
cnpm install compression-webpack-plugin
  • 配置 vue.config.js 文件:
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const isProdOrTest = process.env.NODE_ENV !== 'development'


module.exports = {
    devServer: {
        host: '127.0.0.1',
        proxy: {
            '/': {
                target: 'http://127.0.0.1:8081/',
                pathRewrite: {
                    '^/': '', //重写,
                },
                changeOrigin: true, //是否允许跨域
            },
        },
    },

    productionSourceMap: false, // 设为false,既可以减少包大小,也可以加密源码
    chainWebpack(config) {
        //最小化代码
        config.optimization.minimize(true);
        //分割代码
        config.optimization.splitChunks({chunks: 'all'});
        //默认开启prefetch(预先加载模块),提前获取用户未来可能会访问的内容 在首屏会把这十几个路由文件,都一口气下载了 所以我们要关闭这个功能模块
        config.plugins.delete('prefetch'); 
        if (isProdOrTest) {
            // 对超过10kb的文件gzip压缩
            config.plugin('compressionPlugin').use(
                new CompressionWebpackPlugin({
                    test: /\.(js|css|html)$/, // 匹配文件名
                    filename: '[path].gz[query]', // 压缩后的文件名
                    algorithm: 'gzip', // 使用gzip压缩
                    minRatio: 1, // 压缩率小于1才会压缩
                    threshold: 10240,
                    deleteOriginalAssets: false //是否删除原文件
                })
            );
        };

    }
}


  • 此时运行 npm run build 会发现js、css目录中多出 .gz 的文件,此时放在nginx中,需要开启gzip配置,然后重启nginx。
    在这里插入图片描述
  • 访问页面时候,会发现js文件的类型是 gzip类型:
    在这里插入图片描述

针对图片资源进行压缩:

  • 安装插件 “image-webpack-loader” 。(我本地安装的是 6.0.0版本:cnpm install image-webpack-loader
    @6.0.0)
cnpm install image-webpack-loader
  • 配置 vue.config.js 文件:
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const isProdOrTest = process.env.NODE_ENV !== 'development'


module.exports = {
    devServer: {
        host: '127.0.0.1',
        proxy: {
            '/': {
                target: 'http://127.0.0.1:8081/',
                pathRewrite: {
                    '^/': '', //重写,
                },
                changeOrigin: true, //是否允许跨域
            },
        },
    },

    productionSourceMap: false, // 设为false,既可以减少包大小,也可以加密源码
    chainWebpack(config) {
        //最小化代码
        config.optimization.minimize(true);
        //分割代码
        config.optimization.splitChunks({chunks: 'all'});
        //默认开启prefetch(预先加载模块),提前获取用户未来可能会访问的内容 在首屏会把这十几个路由文件,都一口气下载了 所以我们要关闭这个功能模块
        config.plugins.delete('prefetch'); 
        if (isProdOrTest) {
            // 对超过10kb的文件gzip压缩
            config.plugin('compressionPlugin').use(
                new CompressionWebpackPlugin({
                    test: /\.(js|css|html)$/, // 匹配文件名
                    filename: '[path].gz[query]', // 压缩后的文件名
                    algorithm: 'gzip', // 使用gzip压缩
                    minRatio: 1, // 压缩率小于1才会压缩
                    threshold: 10240,
                    deleteOriginalAssets: false //是否删除原文件
                })
            );
        };
      //开启图片压缩
        config.module.rule('images')
        .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
        .use('image-webpack-loader')
        .loader('image-webpack-loader')
        .options({ bypassOnDebug: true });
    }
}

  • 此时执行 npm run build 之后会发现图片资源会被压缩:
    压缩后:
    在这里插入图片描述
    压缩前:
    在这里插入图片描述

完毕。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值