Javascript 大口喝摩卡如何通过编译器标志?

Javascript 大口喝摩卡如何通过编译器标志?,javascript,gulp,mocha.js,Javascript,Gulp,Mocha.js,我正在尝试使用,但找不到传递编译器标志的好方法。有没有办法把它包括在我的吞咽任务中?也许在另一条管道里 从命令行运行mocha的示例(工作正常) mocha——编译器:my_compiler.js test/***.js 使用gulp mocha的示例(但我可以在哪里指定编译器) 我在gulp mocha插件下没有看到编译器选项,所以我想我需要通过某种方式通过管道添加文本来添加编译器 我刚刚注意到文件处于底部状态- 对于CoffeeScript支持,请将require('CoffeeScript

我正在尝试使用,但找不到传递编译器标志的好方法。有没有办法把它包括在我的吞咽任务中?也许在另一条管道里

从命令行运行mocha的示例(工作正常)
mocha——编译器:my_compiler.js test/***.js

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


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

我刚刚注意到文件处于底部状态-

对于CoffeeScript支持,请将require('CoffeeScript')与CoffeeScript 1.6一起添加,或将require('CoffeeScript/register')与CoffeeScript 1.7+一起添加


我在gulp文件
require('./my_compiler')的顶部为我自己的编译器添加了一个require语句这似乎是可行的

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

Justin Maat,您不需要修改
gulpfile.js
。从
CLI
使用
gulp
时,只需使用
——require

### before
gulp test

### after
gulp --require babel/register test
你注意到区别了吗?为了节省您的按键次数,请将其添加到
.bashrc
.zshrc
中:

alias gulp='gulp --require babel/register'
下一次,您可以像往常一样使用
gulp

gulp test

最重要的答案取决于使用require钩子。这只会在当前流程中起作用,如果在单独的流程中运行Mocha测试,则不会起作用,如使用
gulp spawn Mocha

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

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

Mocha将循环使用
编译器
属性的元素,并在
上拆分。它将把它前面的字符串作为后面的扩展,并将它后面的所有内容注入到
require()
语句中。

供现在尝试的人使用

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)的顶部

运行您的测试,它应该工作

gulp test-mocha

请改进你的答案。解释你是如何解决这个问题的,以及用户做错了什么。嗨@lin,大口喝摩卡就可以包装摩卡,我们可以将编译器作为参数传递。在gulp任务中,我们使用babel将es6转换为es5作为编译器。不管答案是否清晰,它确实解决了让babel编译mocha测试的问题。谢谢你,胡安
require(babel/register)
在gulp文件中不是一个干净的解决方案,因为它加载了babel钩子,文档中的该钩子将污染全局范围并引入冲突
cf。如果您使用此解决方案,则应仅针对测试进行此操作(但仍可能导致问题…)。如果您使用的是babel 6,则新方法是
requre('babel-core/register')
。小心,因为
require('babel/register')
将不再工作。更多:
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);
});
var gulp = require('gulp');
var gutil = require('gulp-util');
var mocha = require('gulp-mocha');
var babel = require('babel-register');
gulp test-mocha