Grunt -修改输出文件名



我使用grunt-image-resize (https://github.com/excellenteasy/grunt-image-resize)来调整图像的大小。但是我的问题是一般性的Grunt,以及我们在任务中插入文件名的方式。

这个想法是采取大的背景图像,并调整它们的大小,并将它们保存在相同的文件夹通过附加像_small,例如,在文件名中。现在,我正在做的是:
image_resize: {
  bg: {
    options: {
      width: 640,
      quality: 0.5,
      overwrite: true
    },
    files: [{
      expand: true,
      cwd: '<%= pkg.path.images_source %>/bg',
      src: ['{,*/}*.{gif,jpeg,jpg,png}'],
      dest: '<%= pkg.path.images_source %>/bg/mobile'
    }]
  }
}

有效地将处理过的文件保存到名为mobile的子文件夹中。但是我真正想做的是:

dest: '<%= pkg.path.images_source %>/bg/{filename}_small.{fileextension}'

使用Grunt是否容易做到这一点?在SO上找不到任何东西,老实说我不知道该找什么…

提前感谢!

更新:

我可以在tmp文件夹中输出图像,然后使用grunt-contrib-copy以不同的名称将它们保存在根文件夹中,但我认为它变得非常乏味……我在寻找一个更干净,更快捷的方式。

您可以使用一个重命名函数来更改目标名称:

files: [{
  // ...
  rename: function(dest, src) {
    var path = require('path'),
    basename = path.basename(src),
    ext = path.extname(file),
    filename = basename.replace(ext, '');
    return path.join(dest, filename + '_small' + ext)
  }
}]

最新更新