具有可变文件名的grunt-file-creator

时间:2013-11-27 06:56:39

标签: gruntjs

我正在尝试使用https://npmjs.org/package/grunt-file-creator来创建文件,但我希望有一个变量文件名...

grunt.initConfig({
  file-creator: {
    "test": {
      grunt.config('meta.revision') + "-test.txt": function(fs, fd, done) {
        fs.writeSync(fd, 'data');
        done();
      }
    }
  }
});

grunt.initConfig({
  file-creator: {
    "test": {
      "<%= grunt.config('meta.revision') %>-test.txt": function(fs, fd, done) {
        fs.writeSync(fd, 'data');
        done();
      }
    }
  }
});

似乎没有用。我怎么能有一个变量文件名?我的想法是我将git提交ID设置为meta.revision的值。

1 个答案:

答案 0 :(得分:2)

这是因为grunt-file-creator实现了自己的API,而不是使用标准的Grunt src/dest API。我建议使用this.files而不是this.data重写任务,但是作者不想使用标准API的简单修复就是更改:

var filepath = item.key;

var filepath = grunt.template.process(item.key);

在任务的第34行:https://github.com/travis-hilterbrand/grunt-file-creator/blob/master/tasks/file-creator.js#L34

否则你必须编写一个像这样的hacky解决方法:

grunt.registerTask('fixed-file-creator', function() {
  var taskName = 'file-creator';
  var cfg = grunt.config(taskName);
  Object.keys(cfg).forEach(function(target) {
    var newcfg = {};
    Object.keys(cfg[target]).forEach(function(dest) {
      newcfg[grunt.template.process(dest)] = grunt.config([taskName, target, dest]);
    });
    grunt.config([taskName, target], newcfg);
  });
  grunt.task.run(taskName);
});

然后运行grunt fixed-file-creator