我需要构建一个开发环境,当.ts
或./src/
中的任何./test/
文件发生变化时,它会自动编译,运行测试,然后运行TSLint,并打印出结果测试和皮棉。
./src/*.ts --\ (tsc --watch) (mocha --watch)
|---------------> ./lib/ ---------------> console.log
./test/*.ts --/ |
| (tslint --watch)
|--------------------> console.log
我已经编写了npm脚本,只使用npm run test
运行此工作流程一次:
// package.json
{
"scripts": {
"pretest": "tsc", // will compile *.ts in src/ and test/ to lib/
"test": "mocha --reporter spec --full-trace lib/test/tests.js", // run the compiled test file
"posttest": "gulp tslint" // run gulp for tslint
}
}
我编写了一个gulp任务来监视文件更改以触发npm脚本:
// gulpfile.js
var exec = require('gulp-exec');
gulp.task("watch", () => {
gulp.watch(paths.scripts, () => {
exec(`npm run test`, {
continueOnError: true,
pipeStdout: true
})
});
});
我跑了gulp watch
,但我没有在控制台中显示测试和lint的结果。
当任何*.ts
文件发生变化时,如何实现运行ts-compile,mocha-test和ts-lint的目标?
答案 0 :(得分:0)
直接在mocha中进行测试会更容易,然后您可以对各种任务进行更精细的控制。
您可以执行以下任务:
gulp.task('compileSrcForWatch', ['compileSrc'], () => gulp.start('test'));
gulp.task('compileTestForWatch', ['compileTest'], () => gulp.start('test'));
gulp.task('watchAndTest', () => {
gulp.watch(config.inputSourceFiles, ['compileSrcForWatch']);
gulp.watch(config.inputTestFiles, ['compileTestForWatch']);
});
我已经用整个文件here创建了一个要点。