2016-12-14 13 views
1

ändert Ich brauche eine Entwicklungsumgebung aufzubauen, die automatisch kompiliert, die Tests ausführen und dann TSLint, wenn eine .ts Datei in ./src/ oder ./test/ Änderungen und aus den Ergebnissen der Tests drucken und die Flusen.automatisch ablaufenden Tests mit Typoskript und Mokka, wenn eine Datei

./src/*.ts --\ (tsc --watch)   (mocha --watch) 
       |---------------> ./lib/ ---------------> console.log 
./test/*.ts --/  | 
        | (tslint --watch) 
        |--------------------> console.log 

Ich habe npm Skripte geschrieben nur einmal diese Arbeit fließen laufen mit npm run test:

// package.json 
{ 
    "scripts": { 
    "pretest": "tsc", // will compile *.ts in src/ and test/ to lib/ 
    "test": "mocha --reporter spec --full-trace lib/test/tests.js", // run the compiled test file 
    "posttest": "gulp tslint" // run gulp for tslint 
    } 
} 

ich einen Schluck Aufgabe schrieb Dateiänderungen zu beobachten den npm Skript auslösen:

// gulpfile.js 
var exec = require('gulp-exec'); 
gulp.task("watch",() => { 
    gulp.watch(paths.scripts,() => { 
    exec(`npm run test`, { 
     continueOnError: true, 
     pipeStdout: true 
    }) 
    }); 
}); 

Ich lief gulp watch, aber ich zeigte nicht die Ergebnisse von Test und Flusen in der Konsole.

Wie erreicht man mein Ziel, dass es ts-compile, mocha-test und dann ts-lint ausführen wird, wenn sich eine *.ts Datei ändert?

+0

Sie haben einen Tippfehler in 'scrpts', es sollte' scripts' sein. – mixel

Antwort

0

Es wäre einfacher, Ihre Tests direkt in Mokka, Sie hätten dann eine genauere Kontrolle über Ihre verschiedenen Aufgaben.

Sie können folgende Aufgaben:

gulp.task('compileSrcForWatch', ['compileSrc'],() => gulp.start('test')); 
gulp.task('compileTestForWatch', ['compileTest'],() => gulp.start('test')); 

gulp.task('watchAndTest',() => { 
    gulp.watch(config.inputSourceFiles, ['compileSrcForWatch']); 
    gulp.watch(config.inputTestFiles, ['compileTestForWatch']); 
}); 

ich einen Kern mit der ganzen Datei here erstellt haben.