GX博客

分享个人 Full-Stack JavaScript 项目开发经验

使用Grunt的grunt-contrib-imagemin插件压缩图片

如果你还没使用过 Grunt,可先阅读Grunt的安装及其插件的选择。下面详细讨论 grunt-contrib-imagemin 插件的配置和使用:


配置选项

以下为插件配置的默认值:

imagemin: {
  options:{
    optimizationLevel: 3,
    progressive : true,
    interlaced: true,
    svgoPlugins: [],
    use: [imagemin.gifsicle(), imagemin.jpegtran(), imagemin.optipng(), imagemin.svgo()],
    concurrency: os.cpus().length
  },
  // ...
},
// ...
  • optimizationLevel

    png 图片的优化级别,可选值为0至7。当优化级别为0时,不会对像颜色深度或颜色类型等图像属性进行修改。优化级别1启用单个 IDAT(图像数据块)压缩试验。所选试验为OptiPNG认为最有效的。优化级别2和更高级别可实现多个 IDAT 压缩试验; 级别越高,试验越多,优化需要的时间越长。推荐使用默认值。

  • progressive

    jpg 由无损转为渐进式。它们的差别主要体现在浏览器加载时,无损图片是一次性扫描的,从上至下的加载显示,而渐进式则是多次扫描,从模糊到清晰的显示。两种方式的图片大小相近,但用户体验后者更好。

  • interlaced

    交错gif,用于渐进式渲染。

  • svgoPlugins

    自定义要使用的 SVGO 插件。了解详细配置请点击这里

  • use

    使用的 imagemin 插件,其中包含 gif 、jpg、png 和 svg 的无损优化器。

  • concurrency

    控制可以并行执行的最大图像优化数(默认使用逻辑 CPU 内核数)。


示例

const {dir} = require('./grunt.config');
// ...
dynamic: {
  files: [
    {
      expand: true,
      cwd: `${dir.imageDev}`,
      src: ['**/*.{png,jpg,gif,svg}'],
      dest: `${dir.imagePro}`
    }
  ]
}

上面配置一个名为 dynamic 的目标,使用默认配置,并动态映射开发目录下的四种格式图片到生产目录。其中具体目录路径从配置 js 文件读取,使用 ES6 的模板字符串引入。

一般使用默认配置就可以达到很好的压缩优化效果。如果你的静态资源是通过 Nginx 代理的,可以把输出路径直接配置到 Nginx 的静态目录下。

版权声明:

本文为博主原创文章,若需转载,须注明出处,添加原文链接。

https://leeguangxing.cn/blog_post_12.html