如何通过Webpack 4压缩图片

4

我希望您能帮助翻译一下关于IT技术的内容。需要翻译的内容为:我想要像TinyPNG一样压缩图像,并将压缩后的图像保存在dist文件夹中。我使用webpack 4,并找到了imagemin-webpack插件,但我不知道该用插件还是加载器?请帮忙配置此任务。

let path = require('path');
let ExtractTextPlugin = require("extract-text-webpack-plugin");
let {imageminLoader} = require("imagemin-webpack");
let imageminGifsicle = require("imagemin-gifsicle");

let conf = {
    entry: './src/index.js',
    output: {
        path: path.resolve(__dirname, './dist/'),
        filename: 'main.js',
        publicPath: 'dist/'
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    fallback: "style-loader",
                    use: [
                        {
                            loader: "css-loader",
                            options: {
                                minimize: true,
                                sourceMap: true
                            }
                        }
                    ]

                })
            },
            {
                test: /\.(jpe?g|png|gif|svg)$/i,
                use: [
                    {
                        loader: "file-loader"
                    },
                    {
                        loader: imageminLoader,
                        options: {
                            cache: true,
                            bail: false,
                            imageminOptions: {
                                plugins: [imageminGifsicle()]
                            },
                            name: "[hash]-compressed.[ext]"
                        }
                    }
                ]
            }

        ]
    },
    plugins: [
        new ExtractTextPlugin("styles.css"),
    ]
};

这是我的配置文件。运行构建命令后,图像没有任何变化。
1个回答

5

我正在使用"img-loader"来压缩Webpack 4中的图像。

            {
                test: /\.(jpe?g|png|gif|svg)$/i,
                loaders: [
                    {
                        loader: 'file-loader',
                        options: {
                            name: '' + imgPath + '[name].[ext]'
                        }
                    },
                    {
                        loader: 'img-loader',
                        options: {
                            plugins: [
                                imageminGifsicle({
                                    interlaced: false
                                }),
                                imageminMozjpeg({
                                    progressive: true,
                                    arithmetic: false
                                }),
                                imageminPngquant({
                                    floyd: 0.5,
                                    speed: 2
                                }),
                                imageminSvgo({
                                    plugins: [
                                        { removeTitle: true },
                                        { convertPathData: false }
                                    ]
                                })
                            ]
                        }
                    }
                ]
            }

当然,这些是必需的变量:

const imgPath = './assets/img/';
const imageminGifsicle = require("imagemin-gifsicle");
const imageminPngquant = require("imagemin-pngquant");
const imageminSvgo = require("imagemin-svgo");
const imageminMozjpeg = require('imagemin-mozjpeg');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接