Grunt-contrib-copy临时禁用路径过滤器

时间:2014-11-13 18:03:31

标签: javascript gruntjs grunt-contrib-copy

您好我正在使用此过滤器

var fs = require('fs');

function onlyNew(target) {
  return function(filepath) {
    var src = fs.statSync(filepath).mtime.getTime();
    var dest = grunt.config(target.concat('dest')) +
      filepath.slice(grunt.config(target.concat('cwd')).length);
    dest = fs.statSync(dest).mtime.getTime();
    return src > dest;
  }
};

在以下对grunt-contrib-copy

的调用中
copy: {
        all: {
            src: 'mysource/reset.html',
            dest: 'mydest/reset.html',
            filter: onlyNew(['copy', 'all'])
        },
},

这很好用,只在源文件比目标文件更新时才复制。但是,如何暂时禁用这些过滤器以强制复制。

我试图制作`onlyNew``过滤器:

function onlyNew(target) {
  if (grunt.option('forceCopy'))
      return true;
  else {
      return function(filepath) {
        var src = fs.statSync(filepath).mtime.getTime();
        var dest = grunt.config(target.concat('dest')) +
          filepath.slice(grunt.config(target.concat('cwd')).length);
        dest = fs.statSync(dest).mtime.getTime();
        return src > dest;
      }
  }
};

但运行grunt --forceCopy无效

1 个答案:

答案 0 :(得分:0)

不要理解这一点,但我的逻辑是倒置的,这有效:

function onlyNew(target) {
  if (grunt.option('forceCopy'))
      return false;
  else {
      return function(filepath) {
        var src = fs.statSync(filepath).mtime.getTime();
        var dest = grunt.config(target.concat('dest')) +
          filepath.slice(grunt.config(target.concat('cwd')).length);
        dest = fs.statSync(dest).mtime.getTime();
        return src > dest;
      }
  }
};