如何在 Webpack 中开启图片压缩

工具对比

npmtrends.com/image-minim…

这四个压缩工具,从下载量来看,image-webpack-loader 较多,image-minimizer-webpack-pluginimagemin-webpack-plugin 次之,imagemin-webpack 已经不再维护,因此不考虑此工具。

www.npmjs.com/package/ima…

以下是对 image-minimizer-webpack-pluginimage-webpack-loaderimagemin-webpack-plugin 的使用进行简要介绍。

使用与配置

先给出没有加压缩工具的 webpack 配置

const path = require('path')
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {entry: {index: './index.js',},output: {path: path.resolve(__dirname, 'build1'),filename: '[name].js',clean: true},module: {rules: [{test: /.(css)$/,use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader']}, {test: /.(jpe?g|png|gif|ico|svg)$/,exclude: /node_modules/,type: 'asset',parser: {dataUrlCondition: {maxSize: 8 * 1024}},}]},plugins: [new MiniCssExtractPlugin({filename: '[name].css',ignoreOrder: false}),],mode: 'production',optimization: {runtimeChunk: {name: 'runtime~single'}}
} 

image-minimizer-webpack-plugin

安装:cnpm i image-minimizer-webpack-plugin imagemin -D

无损压缩:cnpm install imagemin-gifsicle imagemin-jpegtran imagemin-optipng imagemin-svgo -D

配置如下:

const ImageMinimizerPlugin = require("image-minimizer-webpack-plugin");

module.exports = {optimization: {minimizer:[new ImageMinimizerPlugin({minimizer: {implementation: ImageMinimizerPlugin.imageminGenerate,options: {plugins: [["gifsicle", { interlaced: true }],["jpegtran", { progressive: true }],["optipng", { optimizationLevel: 5 }],["svgo",{plugins: ["preset-default","prefixIds",{name: "sortAttrs",params: {xmlnsOrder: "alphabetical",},},],},],],},},}),]}
} 

打包后,图片大小压缩至 7.41 MB。


有损压缩:cnpm install @squoosh/lib --save-dev

const ImageMinimizerPlugin = require("image-minimizer-webpack-plugin");

module.exports = {optimization: {minimizer:[new ImageMinimizerPlugin({minimizer: {implementation: ImageMinimizerPlugin.squooshMinify}}),],runtimeChunk: {name: 'runtime~single'}}
} 

打包后,图片大小压缩至 1.48 MB。

image-webpack-loader

安装:cnpm install image-webpack-loader -D

配置如下:

module.exports = {module: {rules: [{test: /.(jpe?g|png|gif|ico|svg)$/,exclude: /node_modules/,type: 'asset',parser: {dataUrlCondition: {maxSize: 8 * 1024}},use: [{loader: 'image-webpack-loader',// options: {// disable: process.env.NODE_ENV === 'development'// },}]}]},
} 

打包后,图片大小压缩至 1.69 MB。

imagemin-webpack-plugin

安装:cnpm install imagemin-webpack-plugin

配置如下:

const ImageminPlugin = require('imagemin-webpack-plugin').default

module.exports = {optimization: {minimizer: [new ImageminPlugin({// disable: process.env.NODE_ENV === 'development',}),],runtimeChunk: {name: 'runtime~single'}}
} 

打包后,图片大小压缩至 7.64 MB。

压缩前后对比

这三个工具的共同点:压缩图片都依赖于 imagemin,所以对使用这几个工具压缩图片前后体积对比,个人感觉意义不大;如果对同一图片压缩后体积大小不一致,甚至差别很大,很可能是因为压缩相关的配置不太一致。

不过我们可以就以上的配置(基本是官方给的示例配置),去做一些比较。

工具使用感受压缩前压缩后
image-minimizer-webpack-plugin配置较复杂8.26 MB无损:7.41 MB有损:1.48 MB
image-webpack-loader配置简单8.26 MB有损:1.69 MB
imagemin-webpack-plugin配置简单8.26 MB无损:7.64 MB

使用建议

最后从工具的流行程度、使用感受、压缩力度等方面综合考虑,推荐使用 image-webpack-loader 来压缩图片。

注意:在安装包的时候可能会报错,npm install image-webpack-loader -D,主要是在下载一系列压缩工具的时候出错。这时可以切换为国内镜像,用 cnpm install image-webpack-loader -D,这样可以成功安装。

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用React Umi进行图片压缩时,可以通过配置webpack.config.js文件来实现。首先,确保已经安装了image-webpack-loader插件。如果安装失败,可以尝试使用cnpm安装,具体步骤如下: 1. 首先,卸载image-webpack-loader插件,可以使用以下命令: yarn remove image-webpack-loader npm uninstall image-webpack-loader 2. 更换镜像源,可以使用以下命令安装cnpm: npm install cnpm -g --registry=https://registry.npm.taobao.org 3. 使用cnpm安装image-webpack-loader插件: cnpm install --save-dev image-webpack-loader 安装完成后,打开webpack.config.js文件,在配置添加以下内容: ```javascript { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, use: [ { loader: 'file-loader', options: { name: '[name].[hash:7].[ext]', outputPath: 'mobile/img' } }, { loader: 'image-webpack-loader', options: { mozjpeg: { progressive: true, quality: 50 }, optipng: { enabled: false }, pngquant: { quality: [0.5, 0.65], speed: 4 }, gifsicle: { interlaced: false } } } ] } ``` 在这个配置,可以根据自己的需求调整图片压缩的质量。通过设置mozjpeg的quality参数,可以控制JPEG图片的压缩质量。同时,设置pngquant的quality参数,可以控制PNG图片的压缩质量。 请确保在配置完成后,运行yarn build进行打包。经过压缩后,图片的大小可能会减小,但也可能会导致图片稍微模糊。根据实际情况,可以自行调整压缩的质量来平衡图片大小和清晰度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [react打包压缩js\css\img](https://blog.csdn.net/qq_41359066/article/details/107507264)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值