繁体   English   中英

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

[英]gulp-mocha how to pass the compilers flag?

我正在尝试使用gulp-mocha模块,但无法找出传递编译器标志的好方法。 有没有办法在我的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插件下看到编译器选项,所以我想我需要以某种方式通过管道附加文本来添加编译器?

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

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

最佳答案依赖于使用require钩子。 这只适用于当前进程,如果你在一个单独的进程中运行Mocha测试,就像gulp-spawn-mocha

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

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

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

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

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

对于CoffeeScript支持,请使用CoffeeScript 1.6-添加require('coffee-script')或使用CoffeeScript 1.7+添加require('coffee-script / register')。

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

对于任何人现在尝试它

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

Justin Maat,你不需要修改你的gulpfile.js 你只需要使用--require使用时gulpCLI

### before
gulp test

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

你注意到了区别吗? 为了节省几次击键,将其添加到.bashrc.zshrc

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

下次,你可以正常使用gulp

gulp test

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM