webpack之打包压缩版和非压缩版

本文详细介绍如何在Webpack中配置TerserPlugin插件,实现一份源文件同时生成压缩版和非压缩版,以适应开发和生产环境的不同需求。

我们知道,在开发中一般使用非压缩版,利于调试。在生产环境中一般使用体积小的压缩版,有利于提升加载速度。

下面我们就来看一下如何在webpack中对一份文件打包出压缩版和非压缩版

1.安装插件:

cnpm i terser-webpack-plugin -D

2.新建src目录,并且新建index.js ,我们随便写点什么都可以

console.log(111)

3.配置:

"use strict";

// 代码压缩插件
const TerserPlugin = require('terser-webpack-plugin');

module.exports = {
    entry:{
        "large-number":"./src/index.js",
        "large-number.min":"./src/index.js"
    },
    output:{
        filename:"[name].js",
        library:"largeNumber",
        libraryTarget:"umd",
        libraryExport:"default"
    },
    mode:"none",
    optimization:{
        minimize:true,
        minimizer:[
            new TerserPlugin({
                include:/\.min\.js$/,
            })
        ]
    }
}

4.打包

我们可以看到,这里产生了两份文件,压缩版只有1.26k ,而非压缩版有4.24k

 

 

 

### 配置图片压缩Webpack 3.6.0 中,可以通过 `url-loader` `file-loader` 来处理图片资源,并结合适当的配置实现图片的优化压缩。`url-loader` 可以将小文件转换为 base64 编码直接嵌入到 JS 或 CSS 文件中,而大文件则会交给 `file-loader` 进行单独打包输出 [^3]。 为了进一步压缩图片体积,可以使用 `image-webpack-loader` 插件,它支持多种图片格式(如 PNG、JPEG、GIF 等)的无损或有损压缩。 在 `webpack.config.js` 中添加如下配置: ```javascript module.exports = { module: { rules: [ { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/i, use: [ { loader: 'url-loader', options: { limit: 4096, // 小于 4KB 的图片转为 base64 name: 'images/[name].[hash:8].[ext]' } }, { loader: 'image-webpack-loader', options: { mozjpeg: { progressive: true, quality: 65 }, optipng: { enabled: false }, pngquant: { quality: '65-90', speed: 4 }, gifsicle: { interlaced: false }, webp: { quality: 75 } } } ] } ] } }; ``` 上述配置实现了对图片文件的加载压缩处理,确保最终输出的图片体积更小,提升页面加载性能 [^3]。 --- ### 配置 CSS 压缩 Webpack 3.6.0 默认会自动压缩 CSS 文件,需要借助第三方插件来成。通常使用 `optimize-css-assets-webpack-plugin` 插件结合 `cssnano` 工具进行 CSS 文件的压缩与优化。 首先安装必要的依赖: ```bash npm install --save-dev optimize-css-assets-webpack-plugin cssnano ``` 然后在 `webpack.prod.config.js` 中添加如下配置: ```javascript const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); const cssnano = require('cssnano'); module.exports = { optimization: { minimizer: [ new OptimizeCSSAssetsPlugin({ cssProcessor: cssnano, cssProcessorOptions: { discardComments: { removeAll: true }, // 移除注释 reduceIdents: false, // 禁用 @keyframes 动画名称压缩 autoprefixer: false, // 启用自动前缀 safe: true }, canPrint: true }) ] } }; ``` 通过该配置,Webpack 在构建生产环境包时会对所有生成的 CSS 文件进行压缩,去除冗余代码并优化样式表结构,从而减少文件大小 [^1]。 --- ### 相关建议 - **CSS 模块化**:在项目中使用 `css-loader` 的模块化功能,避免全局样式冲突。 - **提取独立 CSS 文件**:对于较大的项目,建议使用 `extract-text-webpack-plugin` 将 CSS 提取为独立文件,便于浏览器缓存按需加载。 - **本控制与缓存策略**:在输出文件名中加入 `[hash]` 或 `[chunkhash]`,确保浏览器能够正确识别更新后的资源文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值