永远不会用gulp结束打字稿编译

时间:2016-05-05 20:30:39

标签: typescript gulp

我正在尝试使用gulp和gulp-typescript npm模块编译我的打字稿文件。我之前已经使用过许多应用程序,但从未遇到过我自己似乎无法解决的问题。 'compile'任务开始,但永远不会结束。这是我的gulpfile.js:

var gulp = require('gulp');
var del = require('del');
var typescript = require('gulp-typescript');
var tscConfig = require('./tsconfig.json');
var exec = require('child_process').exec;
gulp.task('clean', function(){
    return del('./public/dist/**/*');
});
gulp.task('compile', ['clean'], function(){
    return gulp
        .src('./public/ts/**/*.ts')
        .pipe(typescript(tscConfig.compilerOptions))
        .pipe(gulp.dest('./public/dist'))
});
gulp.task('connect', function (cb) {
    exec('node server', function (err, stdout, stderr) {
        console.log(stdout);
    });
})
gulp.task('watch', function(){
    gulp.watch(['./public/ts/**/*.ts'], ['compile', 'connect'])
        .on('change', function(event){
            console.log('\x1b[33m', 'The file ' + event.path + 'has been modified.');
    });
});
gulp.task('default', ['watch', 'compile', 'connect']);

这是我的tsConfig.json文件:

{
    "compilerOptions": {
        "outDir": "dist",
        "target": "es2015",
        "module": "system",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false
    },
      "exclude": [
          "node_modules",
          "typings/main",
          "typings/main.d.ts"
      ]
}

我的架构如下:

\myapp
    \--public
        \--ts
        \--dist
        index.html
    gulpfile.js
    tsconfig.json

除了我的'编译'任务之外的一切似乎都运行正常。请问,为什么出现问题?我一直在寻找几个小时,寻找与其他工作项目的差异,但没有找到任何东西......

3 个答案:

答案 0 :(得分:0)

  

编译'任务开始,但永远不会结束

您必须分享您的代码。您可能想在官方回购中创建一个问题,如下所示:https://github.com/Microsoft/TypeScript/issues/8401

如果您不想分享您的代码:

答案 1 :(得分:0)

gulp.task('compile', ['clean'], function(){
    return gulp
        .src('myapp/ts/**/*.ts')
        .pipe(typescript(tscConfig.compilerOptions))
        .pipe(gulp.dest('myapp/dist'))
});

首先,您可以验证.src中的路径吗?它正在传递myapp/ts/**/*.ts,但在您的体系结构中,ts文件夹似乎与public下的myapp文件夹中存在,因此它应该看起来像myapp/public/ts/**/*.ts

答案 2 :(得分:0)

好的,我明白了。问题来自我的tsconfig.json文件。第"outDir": "dist"行似乎覆盖了.pipe(gulp.dest('myapp/dist'))中的gulpfile.js。愚蠢的错误,因为我不需要那行代码,但我从一个古老的项目中复制/粘贴它,并且不认为编译器选项应该有所不同。无论如何,问题已经解决,谢谢你的回答。