2016-01-19 14 views
6

Ho un compito di gulp di esempio che utilizza il reporter di Mocha Json. Mi piacerebbe scrivere quell'uscita JSON in un file. Gradirei alcuni input.come scrivere su file quando usi gulp e mocha?

Ecco il mio codice:

var gulp = require('gulp'); 
var mocha = require('gulp-mocha'); 
var util = require('gulp-util'); 

gulp.task('myreport', function() { 
    return gulp.src(['tests.js'], { read: false }) 
     .pipe(mocha({ reporter: 'json' })) //how do I write this to a file? 
     .on('error', util.log); 
}); 

risposta

3

ho fatto funzionare a guardare il codice sorgente. Sembra che lo gulp-mocha non segua la pipeline del gulp per spingerlo all'esterno. È possibile utilizzare process.stdout.write anche se il mapping temporaneo del risultato durante l'esecuzione dell'attività.

Ecco un semplice esempio.

var gulp = require('gulp'), 
    mocha = require('gulp-mocha'), 
    gutil = require('gulp-util'), 
    fs = require('fs'); 

gulp.task('test', function() { 
    //pipe process.stdout.write during the process 
    fs.writeFileSync('./test.json', ''); 
    process.stdout.write = function(chunk){ 
    fs.appendFile('./test.json', chunk); 
    }; 

    return gulp.src(['hello/a.js'], { read: false }) 
     .pipe(mocha({ reporter: 'json' })) 
     .on('error', gutil.log); 
}); 
+0

scrive Questo anche stampe console.log al file JSON, che rendono inutile .. Avete una soluzione? Grazie! –

+1

@GalMargalit Sfortunatamente no, questa è una soluzione semplice per mappare l'output in un file. – Theodore

+0

:) grazie è pulito –

2

Usa giornalista mochawesome, si otterrà uscita JSON e molto altro ancora: https://www.npmjs.com/package/mochawesome

Un altro vantaggio di usare questo giornalista è che non si romperà il flusso di scrittura JSON sui messaggi console.log ecc .

.pipe(mocha({reporter: 'mochawesome'})) 

mochawesome screenshot

1

non puoi semplicemente pipe a gulp.dest?

.pipe(gulp.dest('./somewhere'));