gulp-mocha如何通过编译器标志?

时间:2015-03-04 15:56:51

标签: javascript gulp mocha

我正在尝试使用gulp-mocha module,但无法找到传递编译器标志的好方法。有没有办法在我的gulp任务中包含这个?也许在某个单独的管道中?

从命令行运行mocha的示例(工作正常)
mocha --compilers .:my_compiler.js test/**/*.js

使用gulp-mocha的例子(但我在哪里可以指定编译器)?

gulp.task('test', function () {
    gulp.src(["test/**/*.js"], {
        read: false
    })
        .pipe(mocha({
            reporter: 'spec'
        }))
        .pipe(exit());
});

我没有在gulp-mocha插件下看到编译器选项,所以我想我需要以某种方式通过管道附加文本来添加编译器?

6 个答案:

答案 0 :(得分:16)

var mocha = require('gulp-mocha');
var babel = require('babel/register');

gulp.task('mocha', function() {
    return gulp.src(['test/**/*.js'])
        .pipe(mocha({
            compilers: {
                js: babel
            }
        }));
});

答案 1 :(得分:9)

最佳答案依赖于使用require钩子。这只适用于当前流程,而不是像在gulp-spawn-mocha中那样在单独的流程中运行Mocha测试。

这是将编译器传递到mocha模块的方法:

    return mocha({
        compilers: [
            'js:babel-core/register',
        ]
    });

Mocha将循环遍历compilers属性的元素并在:上拆分。它会将之前的字符串视为要遵循的扩展名,并将其后的所有内容注入require()语句。

答案 2 :(得分:8)

在gulpfile的开头使用require('babel-core/register');

答案 3 :(得分:2)

我刚注意到底层状态的文档 -

  

对于CoffeeScript支持,请在CoffeeScript 1.6中添加require(' coffee-script')或要求(' coffee-script / register')与CoffeeScript 1.7 +。

我在gulp文件require('./my_compiler');的顶部为我自己的编译器添加了一个require语句,这似乎有效。

答案 4 :(得分:1)

对于现在正在尝试的人

gulp.task('test-mocha', function() {
    return gulp.src(['tests/acceptance/*.js'], {read: false})
        .pipe(
            mocha({
                compilers: 'js:babel-core/register',
                reporter: 'landing'
            })
        )
        .on('error', gutil.log);
});

并在gulp文件(gulpfile.js)之上

var gulp = require('gulp');
var gutil = require('gulp-util');
var mocha = require('gulp-mocha');
var babel = require('babel-register');

运行测试,它应该可以运行

gulp test-mocha

答案 5 :(得分:0)

Justin Maat,您无需修改​​gulpfile.js。在--require使用gulp时,您只需使用CLI

### before
gulp test

### after
gulp --require babel/register test

你注意到了区别吗?为了节省一些按键,请将其添加到.bashrc.zshrc

alias gulp='gulp --require babel/register'

下次,您可以正常使用gulp

gulp test