You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ImageMinimizerWebpackPlugin将压缩图片存入public/assets文件夹

实现ImageMinimizerWebpackPlugin压缩后图片输出到public/assets目录

要将压缩后的图片指定输出到public/assets文件夹,你需要调整Webpack的资源输出配置,并结合ImageMinimizerPlugin的设置,具体修改如下:

1. 修改图片资源的规则配置

在module.rules的图片处理规则中,添加type: 'asset/resource'指定资源类型,并通过generator.filename定义输出路径:

module: {
  rules: [
    {
      test: /\.(jpe?g|png|gif|svg|webp)$/i,
      // 指定资源类型为资源文件,Webpack会将其输出到指定路径
      type: 'asset/resource',
      generator: {
        // 定义输出路径:public/assets目录下,保留原文件名+哈希值+后缀
        filename: 'public/assets/[name].[hash][ext][query]'
      },
      use: [
        {
          loader: ImageMinimizerPlugin.loader,
        },
      ],
    },
  ],
},

2. 保留优化阶段的压缩配置

你原有的optimization.minimizer中的ImageMinimizerPlugin配置可以保留,它会在Webpack的优化阶段进一步处理图片资源(如果已经通过loader处理,也可根据实际效果选择是否保留,两者启用会进行双重压缩):

optimization: {
  minimize: true,
  minimizer: [
    "...", // 保留默认的JS/CSS压缩器
    new ImageMinimizerPlugin({
      minimizer: {
        implementation: ImageMinimizerPlugin.imageminMinify,
        options: {
          plugins: [
            ["gifsicle", { interlaced: true }],
            ["jpegtran", { progressive: true }],
            ["optipng", { optimizationLevel: 5 }],
          ],
        },
      },
    }),
  ],
},

关键说明

  • type: 'asset/resource'是Webpack 5的asset module特性,替代原file-loader处理图片等资源文件。
  • generator.filename的路径相对于Webpack配置的output.path(默认是项目根目录下的dist文件夹),最终图片会输出到dist/public/assets目录。若要直接输出到项目根目录的public/assets,可修改output.path为path.resolve(__dirname, 'public'),但此操作会让所有打包产物进入public目录,需根据项目需求调整。
  • 若仅需在优化阶段压缩图片,可移除module.rules中的ImageMinimizerPlugin.loader,仅保留optimization中的插件配置即可。

内容的提问来源于stack exchange,提问作者Durdona A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:48:18