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