TypeScript 编译建议 (TS + gulp + karma)

TypeScript Compile Suggestions (TS + gulp + karma)

我正在尝试提出一个可行的 TypeScript 构建步骤,其中包括以下内容:

我目前的尝试涉及使用:

我宁愿只需要 运行 一次编译步骤,因为现在我必须执行单元测试的预编译步骤和下面的 build-ts 输出到我的步骤dist 文件夹。我试过使用 karma-typescript-pre-processor,结果好坏参半,性能不佳(测试,16 秒 w/o 2 秒)。

注意:我还没有尝试解决代码覆盖方面的问题,因为我对现有的 build/unit 测试解决方案不满意。

我目前使用的karma文件是

module.exports = function(config) {
  config.set({
    browsers: ['PhantomJS'],
    frameworks: ['jasmine'],
    files: [
      '../bower_components/angular/angular.js',
      '../bower_components/angular-mocks/angular-mocks.js',
      '../app/**/*_test.ts',
      {
        pattern: '../app/**/!(*_test).ts',
        included: false
      }
    ],
    preprocessors: {
      '../typings/jasmine/jasmine.d.ts': ['typescript'],
      '../app/**/*.ts': ['typescript']
    },
    typescriptPreprocessor: {
      options: {
        sourceMap: true,
        target: 'ES5',
        noResolve: false
      },
      transformPath: function(path) {
        return path.replace(/\.ts$/, '.js');
      }
    },
    //reporters: ['progress', 'growl'],
    colors: true
  });
};

gulp文件:

gulp.task('build-ts', function () {
  return gulp.src(paths.ts)
    .pipe(tsc({
      noResolve: false,
      out: 'app.js',
      outDir: paths.dist.js,
      removeComments: true,
      //sourcePath: '../../app/ts',
      //sourcemap: true,
      target: 'ES5'
    }))
    .pipe(gulp.dest(paths.dist.js))
    .pipe(connect.reload());
});

您可以在保存时使用gulp.watch编译打字稿文件。这样,当您 运行 测试时,打字稿已经编译。 gulp-tsc 模块应该有设置增量编译的指南。