gulp: přesměrovat výstup TypeScriptu do Mocha
Chci přidat test Mocha do projektu TypeScript. V gulpfile.js spojuji gulp-typescript a gulp-mocha:
gulp.src(['./test/**/*.ts', './typings/tsd.d.ts'])
.pipe(typescript())
.pipe(mocha());
Mocha hlásí chybu Error: Cannot find module '.../myproject/test/case1.js'.
Hledal jsem na Google, všechny příklady, které jsem našel, ukládají výstup transpileru TypeScript do dočasných souborů a pak ho spouštějí s Mocha. Také jsem si všiml v dokumentaci gulp-mocha, že se tam píše „nemůžete mít žádné pluginy před ním“:
gulp.task('default', function () {
return gulp.src('test.js', {read: false})
// gulp-mocha needs filepaths so you can't have any plugins before it
.pipe(mocha({reporter: 'nyan'}));
});
Jednou z výhod gulpu je však používání streamu k vynechání dočasných souborů. Jak mohu přesměrovat výstup transpileru do mocha? Nebo je to pro mocha nemožné?
Odpověď č. 1
Dokud nepřesměrujete výstup TypeScript kompilátoru na cílové místo pomocí gulp.dest, nebudete mít k dispozici výstupní soubory, aby Mocha mohla spustit vaše testy. Níže uvedené by mělo fungovat podle mých testů.
gulp.src(['./test/**/*.ts', './typings/tsd.d.ts'])
.pipe(typescript())
.pipe(gulp.dest(''))
.pipe(mocha());
Odpověď č. 2
Je to otázka z před 3 lety. Publikuji svou vlastní odpověď, abych ji uzavřel.
Moje řešení nebylo používat žádný nástroj pro sestavování jako Gulp, ale používat přímo npm skripty. A také s pomocí scripty mohu psát build skript v jakémkoli skriptovacím jazyce, např. shell skript nebo javascript.
Zde je příklad: https://github.com/aleung/node-anyid/blob/master/package.json
Reference: Používání Npm skriptů jako nástroje pro sestavení
