grunt-contrib-imagemin将文件输出到错误的文件夹

时间:2014-01-11 13:28:37

标签: javascript gruntjs

以下是我的Gruntfile.js中引用iamgemin的部分:

imagemin: {
  options: {
    optimizationLevel: 3
  },
  build: {
    expand: true,              
    src: ['img/*.png', 'img/*.jpg', 'img/*.jpeg', 'img/*.gif'],   
    dest: 'img/min/' 
  }
}

我在/ img目录中有文件,并希望压缩版本在/ img / min。

当我运行grunt时,压缩文件最终会出现在/ img / min / img中,这不是我想要的。

有什么想法吗?指定cwd似乎什么都不做。


编辑:这是我目前的Gruntfile

imagemin: {
  options: {
    optimizationLevel: 3,
    flatten: true
  },
  build: {
    expand: true,              
    src: ['src/img/*.{png,jpg,jpeg,gif}'],   
    dest: 'build/img/' 
  }
}

指定cwd什么也没做。文件当前被转储到/build/img/src/img/1.jpg中。我希望它们能在/build/img/1.jpg中输出

2 个答案:

答案 0 :(得分:2)

您可以使用“flatten:true”选项让文件以img / min结束,无论它们来自何处。

或者,确实,您应该能够使用cwd,如下所示:

imagemin: {
  options: {
    optimizationLevel: 3
  },
  build: {
    files: {
      cwd: 'img',
      expand: true,              
      src: ['*.png', '*.jpg', '*.jpeg', '*.gif'],   
      dest: 'img/min/' 
    }
  }
}

更新:只是为了记录,您可以使用更紧凑的表示法:['*。{png,jpg,jpeg,gif}']作为您的来源。

有关详细信息,请参阅http://gruntjs.com/configuring-tasks#building-the-files-object-dynamically

更新2 :正如文档中所指出的,flatten:true是文件部分的一部分。 E.g:

imagemin: {
  options: {
    optimizationLevel: 3
  },
  build: {
    files: {
      expand: true,              
      flatten: true,
      src: ['img/*.png', 'img/*.jpg', 'img/*.jpeg', 'img/*.gif'],   
      dest: 'img/min/' 
    }
  }
}

答案 1 :(得分:0)

您应该使用cwd,例如:

imagemin: {
    dynamic: {
        files: [{
            expand: true,
            cwd: 'src/img',
            src: ['**/*.{png,jpg,gif,ico}'],
            dest: 'www/img'
        }],
    },
},

此代码从src / img / *文件夹中获取图像并将其编译为www / src / *