2015-10-16 75 views
0

我想在我的gulpfile中建立一個只能建立改變的打字稿文件的手錶,問題是它看着一個建造良好,但所有的控制檯輸出平息它似乎,所以我不是在命令行上看到任何打字稿編譯錯誤。gulp手錶平息打字稿錯誤

這是我gulpfile的相關部分

var watch=require('gulp-watch'); 
var ts=require('gulp-typescript'); 

var tsProj = ts.createProject('tsconfig.json'); 

gulp.task('watch-typescript', function(){ 
    watch('app/**/*.ts') 
    .pipe(ts(tsProj)) 
    .pipe(gulp.dest('app')); 
}); 

gulp.task('default', function(){ 
    gulp.src('app/**/*.ts') 
    .pipe(ts(tsProj)) 
    .pipe(gulp.dest('app')); 
}); 

如果我創建有誤,且只需運行默認任務,系統會報告罰款打字稿文件,但使用手錶任務時,我沒有看到任何錯誤(它仍然試圖建立(當然失敗)等等)。

我嘗試過這種語法,但也嘗試了watch('app/**/*.js', function(files){...})語法,但所有不同的解決方案都給出了相同的結果,當gulp-watch打開時,沒有其他工具的控制檯輸出。

在默認任務中使用.pipe(watch('app/**/*.ts'))時,實際上看到了同樣的情況,其中有很多事情正在進行(爲sass構建等觸發了多個任務),只要代碼到達手錶,所有其他輸出到控制檯消失。

所以我的問題是,我在這裏錯過了什麼,這似乎是如此的問題,它會讓任何人都沒有使用吞嚥手錶,但我仍然沒有找到任何有關這個時候谷歌搜索的信息,所以我必須遺漏了什麼。

回答

0

我們正在使用以下任務來構建打印稿(默認任務是觀察更改並將.ts文件編譯爲帶有嵌入式源圖的單個文件)。在監視任務工作期間,輸出中會出現錯誤。

var gulp = require("gulp"), 
    concat = require("gulp-concat"), 
    ts = require("gulp-typescript"), 
    sourcemaps = require("gulp-sourcemaps"); 

gulp.task("typescript:sources", function() { 
    var tsResult = gulp.src(["./sources/**/*.ts"]) 
     .pipe(sourcemaps.init()) 
     .pipe(ts({ 
      target: "ES5", 
      noImplicitAny: false 
     })); 

    return tsResult.js 
     .pipe(concat("dist.scripts.js")) 
     .pipe(sourcemaps.write({ sourceRoot: "sources" })) 
     //Source map is a part of generated file 
     .pipe(gulp.dest("./dist")); 
}); 

gulp.task("add_ts_watch:sources", function() { 
    gulp.watch(["./sources/**/*.ts"], ["typescript:sources"]) 
}); 

gulp.task('default', ['add_ts_watch:sources']); 

希望這會有所幫助。

+0

這與我們已有的類似,但是編譯這樣的所有內容需要一分半鐘,並且不可行,因此我們需要一個只編譯觸發手錶的文件的解決方案。 gulp.watch不能那樣做,但是gulp-watch應該是。 –