2015-10-16 90 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应该是。 –