4

我正在尝试自动化我的测试,并希望为在 src 文件夹上创建的任何 javascript 自动创建测试文件。这是我的文件夹结构的分解。

js
--src
  --sum.js
  --subtract.js
  --calculator.js
  --innerFolder
    --multiply.js
    --divide.js
--specs

因此,从上面的文件夹结构中,我想要做的是创建我的规范中的所有文件夹结构和文件,只有当目标文件夹上的文件不存在时: -

js
--src
  --sum.js
  --subtract.js
  --calculator.js
  --innerFolder
    --multiply.js
    --divide.js
--specs
  --sumSpec.js
  --subtractSpec.js
  --calculator.js
  --innerFolder
    --multiplySpec.js
    --divideSpec.js

我解决这个问题的方法是观察 src 文件夹中的所有文件/文件夹:-

watch:{
  src : {
    files: ['src/**/*.*'],
    tasks:  //create files and folders on specs folders here
}

我遇到了grunt.file插件,也考虑过grunt-shell并制作我自己的脚本来实现这一点。

但我想知道是否已经有更简单的方法可以做到这一点。

4

1 回答 1

5

尝试复制任务以及过滤器属性:

grunt.initConfig({
  copy: {
    js: {
      expand: true,
      cwd: 'js/src',
      src: '**/*.js',
      dest: 'js/specs',
      filter: function(filepath) {
        var path = require('path');
        var dest = path.join(
          grunt.config('copy.js.dest'),
          // Remove the parent 'js/src' from filepath
          filepath.split(path.sep).slice(2).join(path.sep)
        );
        return !(grunt.file.exists(dest));
      },
    },
  },
  watch: {
    js: {
      files: ['js/src/**/*.js'],
      tasks: ['copy:js'],
    },
  },
});

然后你可以让它复制在你编辑或运行时不存在的文件grunt copy:js

于 2013-10-18T16:19:19.673 回答