Grunt - 修改输出文件名

时间:2014-05-12 18:44:20

标签: javascript gruntjs

我正在使用grunt-image-resizehttps://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以不同的名称将它们保存在根文件夹中,但是我认为它变得非常乏味......我是寻找更清洁,更快捷的方式。

1 个答案:

答案 0 :(得分:2)

您可以使用目的地名称来重命名功能:

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)
  }
}]