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

时间:2015-03-02 13:08:07

标签: typescript gulp karma-runner

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

  • 编译TypeScript(显然)
    • 理想情况下允许编译器遍历依赖关系树
  • 通过业力执行茉莉花单元测试
  • 不依赖于IDE(Visual Studio / WebStorm)来执行测试和输出JS
  • 能够通过WebStorm的运行配置执行单元测试
  • 基于TS代码的代码覆盖率结果,而不是JS

我目前的尝试涉及使用:

  • 吞掉-TSC
  • 业力
  • 果报打字稿-预处理

我更喜欢只需要运行一次编译步骤,因为到目前为止我必须为单元测试执行预编译步骤,并在下面执行build-ts步骤以输出到我的dist文件夹。我尝试使用karma-typescript-pre-processor混合结果和糟糕的表现(测试,16秒w / o 2秒)。

注意:我还没有尝试解决代码覆盖方面的问题,因为我对我所使用的构建/单元测试解决方案不满意。

我目前使用的业力档案是

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
  });
};

gulpfile:

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());
});

1 个答案:

答案 0 :(得分:1)

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