sto sviluppando un progetto dattiloscritto con le seguenti operazioni costruire:orologio Gulp termina o costruisce l'intera catena compito
- lint
- accumulo
- prova
Sto usando Gulp 4.0 come strumento di compilazione e si desidera avere un'attività di controllo, che dovrebbe attivare il test (il che significa che i task lint e build sono stati attivati prima). Attualmente, quando si verifica un errore (ad esempio un errore di sfilacciamento), l'attività di controllo termina.
Questo problema è ben noto e facile da risolvere. La soluzione tipica è a) per evitare errori o b) per correggere il comportamento del tubo.
a) Per la gulp-tslint ho potuto utilizzare questo config da loro homepage:
gulp.task("invalid-noemit",() =>
gulp.src("input.ts")
.pipe(tslint())
.pipe(tslint.report("prose", {
emitError: false
}))
);
Ma quando includo la bandiera emitError
, gli errori pelucchi vengono registrati e vengono eseguiti tutti i seguenti compiti gulp (build, test) .
b) Potrei anche utilizzare gulp-plumber
o rilevare errori manualmente (vedere here), ma il comportamento è lo stesso per tutte queste soluzioni note, vengono eseguite le seguenti attività di gulp (build, test).
Quello che voglio è che la catena di attività si fermi dopo un errore (nessuna generazione e test dopo un errore di sfilacciamento), ma l'attività di controllo non dovrebbe mai fermarsi. Come potrei risolvere questo? I compiti watcher simile a questa:
// watcher
gulp.task('watch', gulp.series('test', function doWatch() {
gulp.watch([
config.paths.sourcePattern,
config.paths.testPattern,
'gulpfile.js'
], gulp.parallel('test'));
}));
È possibile trovare la completa gulpfile.js
here.
Potrebbe pubblicare il tuo compito orologio? –
Ho aggiornato la domanda con l'attività di controllo. – ChrLipp
è lo stesso se si utilizza gulp.series ('lint', 'build', 'test') sull'attività di controllo, invece di dipendere direttamente dagli altri? – YOU