目录中所有文件和子目录中文件的全局模式(递归)

Jas*_*zak 5 javascript gulp

我正在为我们的项目设置测试运行器任务,但遇到了一些意外的情况。我们的任务没有使用以下模式获取任何文件:

'/tests/**/*.spec.js'
Run Code Online (Sandbox Code Playgroud)

我们的目录结构是这样的:

--Scripts
     --app
     --tests
         -test.spec.js

     -gulp.js
     -karma.conf.js
     etc.
Run Code Online (Sandbox Code Playgroud)

然而,这是提出了 0 个测试用例。当我将模式更改为:

'/tests/*.spec.js'
Run Code Online (Sandbox Code Playgroud)

然后它就会按预期工作。现在,我知道这/**/*spec.js是“零个或多个子目录中以“spec.js”结尾的文件”的模式。但是,感觉应该有一个简单的模式来表示“此目录和零个或多个子目录中以“spec.js”结尾的所有文件”。否则,如果我的结构如下所示,我知道必须使用这两种模式:

--Scripts
     --app
     --tests
         -test.spec.js
         --subTests
             -test2.spec.js
     -gulp.js
     -karma.conf.js
     etc.
Run Code Online (Sandbox Code Playgroud)

上面的内容需要我的 gulp 任务如下所示:

gulp.task('unit-test', ['lint'], function (done) {
    gulputil.log('Running unit tests...');
    //return gulp.src(testFilesDirect).pipe(jasmine({ verbose: true, includeStackTrace: true }));
    new KarmaServer({
        configFile: __dirname + '/karma.conf.js',
        files: ['/tests/*.spec.js', '/tests/**/*.spec.js'],
        // Continuous Integration mode
        // if true, Karma captures browsers, runs the tests and exits
        singleRun: false
    }, done).start();
});
Run Code Online (Sandbox Code Playgroud)

这是正确的还是我错过了一些不需要两个测试模式的基本内容?

这里还有另一篇文章讨论符号链接:Gulp - Target all files in a folder and its subfolders

但这似乎是针对更加本地化的设置,而我的情况需要成为自动化构建系统的一部分,此外,这些解决方案涉及 Linux 或 Mac,而我们的系统是基于 Windows 的。