Typescript 类型脚本编译建议(TS+;吞咽和#x2B;因果报应)

Typescript 类型脚本编译建议(TS+;吞咽和#x2B;因果报应),typescript,gulp,karma-runner,Typescript,Gulp,Karma Runner,我试图提出一个可行的TypeScript构建步骤,包括以下内容: 编译类型脚本(显然) 理想情况下,允许编译器遍历依赖关系树 通过karma执行jasmine单元测试 不依赖IDE(VisualStudio/WebStorm)来执行测试和输出JS 能够通过WebStorm的运行配置执行单元测试 基于TS代码的代码覆盖率结果,而不是结果JS 我目前的尝试包括使用: 大口tsc 业力 karma类型脚本预处理器 我宁愿只运行一次编译步骤,因为到目前为止,我必须为单元测试执行预编译步骤,并

我试图提出一个可行的TypeScript构建步骤,包括以下内容:

  • 编译类型脚本(显然)
    • 理想情况下,允许编译器遍历依赖关系树
  • 通过karma执行jasmine单元测试
  • 不依赖IDE(VisualStudio/WebStorm)来执行测试和输出JS
  • 能够通过WebStorm的运行配置执行单元测试
  • 基于TS代码的代码覆盖率结果,而不是结果JS
我目前的尝试包括使用:

  • 大口tsc
  • 业力
  • karma类型脚本预处理器
我宁愿只运行一次编译步骤,因为到目前为止,我必须为单元测试执行预编译步骤,并在下面执行
buildts
步骤以输出到我的dist文件夹。我尝试过使用
karma typescript预处理器
,结果参差不齐,性能不佳(测试时,16秒,不超过2秒)

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

我当前使用的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
  });
};
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());
});

您可以使用gulp.watch在保存时编译typescript文件。这样,当您运行测试时,类型脚本已经编译好了。gulp tsc模块应该有一个设置增量编译的指南。

听起来测试套件是您的慢点,而不是编译。你应该看看你的测试,看看哪些测试耗时最长。也许你可以让他们更有效率或更快?如果你有面向时间的测试,也许你可以引入一个调度器并进行一些确定性测试?你有一个示例项目要看吗?@SteveSloka你可以看看这个repo,测试在app_tests.ts中,karma配置文件位于config目录()中为什么要处理
。/打字/jasmine/jasmine.d.ts
?这只是一个类型定义。另一个选择。。加载tsconfig.json文件以填充typescriptPreprocessor。options@Ridermansb这个问题是大约9个月前提出的(pre-tsconfig.json)。虽然这并不能完全处理我的场景,但它与我将要讨论的内容是一致的。我发现在对输出的JS代码执行单元测试之前,我可以使用WebStorm运行配置来预运行编译。谢谢