Ho una serie di obiettivi per l'esecuzione di gulp.js mio test moka che funzionano come un fascino che attraversa gulp-mocha. Domanda: come faccio a eseguire il debug dei miei test di moka eseguiti attraverso gulp? Vorrei usare qualcosa come node-inspector per impostare i punti di interruzione nei miei file src e test per vedere cosa sta succedendo. Sono già in grado di raggiungere questo chiamando direttamente il nodo:Gulp: obiettivo di eseguire il debug moka test
node --debug-brk node_modules/gulp/bin/gulp.js test
Ma io preferirei un bersaglio sorso che avvolge questo per me, per es .:
gulp.task('test-debug', 'Run unit tests in debug mode', function (cb) {
// todo?
});
idee? Voglio evitare uno script bash
o qualche altro file separato dal momento che sto cercando di creare un riutilizzabile gulpfile
con gli obiettivi che sono utilizzabili da qualcuno che non conosce sorso.
Ecco il mio attuale gulpfile.js
// gulpfile.js
var gulp = require('gulp'),
mocha = require('gulp-mocha'),
gutil = require('gulp-util'),
help = require('gulp-help');
help(gulp); // add help messages to targets
var exitCode = 0;
// kill process on failure
process.on('exit', function() {
process.nextTick(function() {
var msg = "gulp '" + gulp.seq + "' failed";
console.log(gutil.colors.red(msg));
process.exit(exitCode);
});
});
function testErrorHandler(err) {
gutil.beep();
gutil.log(err.message);
exitCode = 1;
}
gulp.task('test', 'Run unit tests and exit on failure', function() {
return gulp.src('./lib/*/test/**/*.js')
.pipe(mocha({
reporter: 'dot'
}))
.on('error', function (err) {
testErrorHandler(err);
process.emit('exit');
});
});
gulp.task('test-watch', 'Run unit tests', function (cb) {
return gulp.src('./lib/*/test/**/*.js')
.pipe(mocha({
reporter: 'min',
G: true
}))
.on('error', testErrorHandler);
});
gulp.task('watch', 'Watch files and run tests on change', function() {
gulp.watch('./lib/**/*.js', ['test-watch']);
});
magari utilizzare childprocess.exec? http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback –
@BrianGlaz che sia una buona idea. L'unico svantaggio è che non si ottiene l'output dal processo fino a quando l'attività non è completa anziché as-you-go. C'è un modo per farlo mentre si ottiene un output progressivo allo stdout? –
Scopri child_process.spawn() http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options. è molto simile ma funge da emettitore di eventi che consente di allegare i callback. Controlla il link per gli esempi. –