grunt imagemin不会移动未经优化的图像

时间:2016-04-12 14:37:37

标签: image optimization gruntjs grunt-contrib-imagemin

我刚刚在一个正在进行的项目中注意到这一点:

假设你要压缩大量图像并将它们放在images-src文件夹中。压缩后,它们会进入images文件夹,这些是您在项目中使用的文件夹。

可能会发生一些图像不需要任何优化而且我注意到它们留在源文件夹中并且不会移动到images但是这会产生问题,因为现在有些图像丢失了我甚至不确切知道哪些。

这是一个错误还是我错过了什么?

我的配置非常简单:

imagemin: {
    dynamic: {
        files: [{
            expand: true, // Enable dynamic expansion
            cwd: '_src/images/', // source images (not compressed)
            src: ['**/*.{png,jpg,gif,svg}'], // Actual patterns to match
            dest: '_dev/images/' // Destination of compressed files
        }]
    }
}, //end imagemin

我如何将未经优化的图像从源头移动到dist?

1 个答案:

答案 0 :(得分:0)

您可以在之后执行复制任务,以便在目标中移动所有未经优化的图像。

使用一些过滤器来避免覆盖已经在目标中的压缩图像。

 copy: {
   unoptimizedImage: {
    expand: true,
    cwd: '_src/images/',
    src: ['**/*.{png,jpg,gif,svg}'],
    dest: '_dev/images/'

    // Copy if file does not exist.
    filter: function (filepath) {
        // NPM load file path module. 
        var path = require('path');

        // Construct the destination file path.
        var dest = path.join(
            grunt.config('copy.main.dest'),
            path.basename(filepath)
        );

        // Return false if the file exists.
        return !(grunt.file.exists(dest));
    },
 },
},