Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gruntjs 具有可变文件名的grunt文件创建者_Gruntjs - Fatal编程技术网

Gruntjs 具有可变文件名的grunt文件创建者

Gruntjs 具有可变文件名的grunt文件创建者,gruntjs,Gruntjs,我正在尝试使用创建一个文件,但我希望有一个可变的文件名 grunt.initConfig({ file-creator: { "test": { grunt.config('meta.revision') + "-test.txt": function(fs, fd, done) { fs.writeSync(fd, 'data'); done(); } } } }); 及 grunt.initConfig({ 文

我正在尝试使用创建一个文件,但我希望有一个可变的文件名

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

grunt.initConfig({
文件创建者:{
“测试”:{
“-test.txt”:函数(fs、fd、done){
fs.writeSync(fd,“数据”);
完成();
}
}
}
});

好像不管用。如何获得可变文件名?我的想法是将git提交ID设置为
meta.revision
的值

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

var filepath = item.key;

在任务的第34行:

否则,您将不得不编写一个如下的黑客解决方案:

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

var filepath = grunt.template.process(item.key);
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);
});