Vyhledávání na webu

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í

Související články