【发布时间】:2014-11-17 08:15:40
【问题描述】:
我正在尝试让 gulp 编译并查看 TypeScript 文件。这就是我到目前为止所得到的
var tsProject = plugins.typescript.createProject(
{
removeComments: false,
target: 'ES5',
module: 'amd',
noExternalResolve: false,
noImplicitAny: false,
});
var typescriptGlob = [
presentationScriptsDir + '**/*.ts',
definitelyTypedDefinitions
];
gulp.task("compile-typescript", function () {
return gulp.src(typescriptGlob)
.pipe(plugins.typescript(tsProject))
.pipe(gulp.dest(presentationScriptsDir));
});
gulp.task("watch-typescript", function() {
return gulp.watch(typescriptGlob, ["compile-typescript"]);
});
我正在使用gulp-typescript。
但是,由于我们有数百个 TypeScript 文件,我不想在其中一个文件发生更改时重新编译所有文件。上面的代码可以做到这一点(我可以说是因为watch-typescript 花费的时间至少与compile-typescript 一样多)
我试过用gulp-changed,像这样
gulp.task("compile-typescript", function () {
return gulp.src(typescriptGlob)
.pipe(plugins.changed(presentationScriptsDir, {extension: '.js'}))
.pipe(plugins.typescript(tsProject))
.pipe(gulp.dest(presentationScriptsDir));
});
这确实会过滤掉未更改的文件。但是 typescript 编译器会报告错误,因为它只获取一个文件,缺少通常从其他文件获取的类型声明。
我不想将 noExternalResolve 标志设置为 true,因为这样就不会进行大量类型检查,这在很大程度上挫败了首先使用 TypeScript 的理由。
如何更好地编写这个 gulpfile?
【问题讨论】:
标签: javascript typescript gulp gulp-watch gulp-changed