我想在我的主gulp工具链中包含typescript,这样我就可以根据需要和时间允许将。js文件转换为。ts文件。如果typescript步骤对.js文件不执行任何操作也没关系。
明白了吗?如果是这样,我该如何做到这一点?我尝试了以下操作:
function compileScript(inputFiles, outputName, outputPath) {
return r.gulp.src(inputFiles)
.pipe(r.sourcemaps.init())
.pipe(r.ngAnnotate())
// I'd like to do this, but processing fails if not all files are *.ts
// .pipe(r.typescript({ target: 'ES5' }))
.pipe(r.uglify())
.pipe(r.concat(outputName))
.pipe(r.sourcemaps.write('.'))
.pipe(r.gulp.dest(outputPath));
}
但是没有输出,引用:
ERROR 6054: File 'script.js'必须有扩展名'。t '或'.d. Ts '。
也许有一个我忽略的typescript选项,或者一个不会破坏我的源地图的条件管道工具?如果我运行.ts和.js文件的两个单独的步骤,它们最终会无序地连接在一起。
我想避免大爆炸的方法。
注。我正在构建一个ASP。
似乎您目前正在向gulp-typescript
提供完整的文件列表,仅使用gulp-filter
过滤出*.ts
的文件:
function compileScript(inputFiles, outputName, outputPath) {
var filter = require('gulp-filter')('**/*.ts'); // setup filter
return r.gulp.src(inputFiles)
.pipe(r.sourcemaps.init())
.pipe(filter) // filter out *.ts files
.pipe(r.typescript({ target: 'ES5' })) // compile them
.pipe(filter.restore()) // restore all other files to proceed
.pipe(r.ngAnnotate())
.pipe(r.uglify())
.pipe(r.concat(outputName))
.pipe(r.sourcemaps.write('.'))
.pipe(r.gulp.dest(outputPath));
}
作为旁注,我认为您应该首先编译*.ts
文件,然后再编译ng-annotate
文件。