6

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 ファイルがあるため、ファイルの 1 つが変更されるたびにすべてのファイルを再コンパイルする必要はありません。上記のコードはそれを行います(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 コンパイラは、通常は他のファイルから取得する型宣言がない単一のファイルしか取得しないため、エラーを報告します。

フラグを trueに設定したくありませんnoExternalResolve。なぜなら、多くの型チェックが行われず、そもそも TypeScript を使用する多くの理由が台無しになるからです。

この gulpfile をより適切に記述するにはどうすればよいですか?

4

1 に答える 1