2015-03-04 12 views
9

Sto provando a utilizzare lo gulp-mocha module ma non riesco a trovare un buon modo per passare il flag del compilatore. C'è un modo per includerlo nel mio compito di gulp? Forse in un tubo separato in qualche modo?gulp-mocha come passare la flag dei compilatori?

Esempio se in esecuzione moka da linea di comando (funziona bene)
mocha --compilers .:my_compiler.js test/**/*.js

esempio se si utilizza gulp-moka (ma dove posso specificare un compilatore)?

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

Non vedo un'opzione compilatori sotto il plugin sorso-moka, così sto pensando ho bisogno di aggiungere in qualche modo i compilatori aggiungendo il testo attraverso un tubo in qualche modo?

risposta

2

Ho appena notato la documentazione in stato di fondo -

Per il supporto CoffeeScript, aggiungere require ('caffè-script') con CoffeeScript 1.6- o richiedere ('caffè-script/registro') con CoffeeScript 1.7+.

Ho aggiunto una dichiarazione di richiesta per il mio compilatore nella parte superiore del mio file Gulp require('./my_compiler'); e questo sembrava funzionare.

+1

Non sembra di lavorare con babel però. –

8

Usa require('babel-core/register'); all'inizio della gulpfile

0

Justin Maat, non è necessario modificare la vostra gulpfile.js. Hai solo bisogno di usare --require quando si utilizza gulp da CLI:

### before 
gulp test 

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

si nota la differenza? E per risparmiare pochi tasti, aggiungere questo al vostro .bashrc o .zshrc:

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

e la prossima volta, è possibile utilizzare gulp come normale

gulp test 
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 
      } 
     })); 
}); 
+4

Si prega di migliorare la risposta. Spiega come hai risolto questo problema e cosa ha sbagliato l'utente. – lin

+0

Ciao @lin, gulp-mocha avvolge solo mocha e potremmo passare i compilatori come parametri. Utilizziamo babel per trasformare es6 in es5 come compilatore nel task gulp. –

+0

indipendentemente dalla chiarezza della risposta, ha risolto il mio problema facendo in modo che babel compilasse i miei test di moka. Grazie Juan! –

8

La risposta superiore si basa sull'utilizzo del richiede un gancio. Questo funzionerà solo nel processo corrente e non se esegui i test Mocha in un processo separato, come con gulp-spawn-mocha.

Ecco come si passa compilatori nel modulo moka:

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

Mocha in loop attraverso gli elementi della proprietà compilers e dividere il :. Tratterà la stringa prima di essa come le estensioni da seguire e inietterà ogni cosa dopo di essa in un'istruzione require().

1

per chiunque cerchi ora

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); 
}); 

e sulla parte superiore del file gulp (gulpfile.js)

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

gestiscono il test e dovrebbe funzionare

gulp test-mocha 
Problemi correlati