如何使用 gulp-changed with gulp-typescript

How to use gulp-changed with gulp-typescript

我正在集成 gulp-changed 以防止所有文件在更改时记录到控制台。这适用于我的 HTML 文件,但我也在使用 gulp-typescript 将我的 TypeScript 文件转换为 JavaScript.

我使用 Dan Wahlin 建议的 TypeScript 工作流 here

所以我实现了 gulp-changed into gulp-typescript 像这样:

var res = gulp.src(config.src)
        .pipe($.sourcemaps.init())
        .pipe($.changed(config.dest)) // <-- THIS LINE IS WHAT I ADDED
        .pipe($.typescript({
            target: config.options.target,
            module: config.options.module,
            removeComments: true
        }));

    res.dts.pipe(gulp.dest(config.dest));

    return res.js
        .pipe($.sourcemaps.write('.'))
        .pipe(gulp.dest(config.dest));

我的 config 对象如下所示:

    "src": "./source/app/**/*.ts",
    "ignore": "!./source/**/*.d.ts",
    "options": {
        "target": "ES5",
        "module": "commonjs"
    },
    "lint": "prose",
    "dest": "./build/public/app"

仍然,当我更改单个文件时,所有文件都会被记录。 我什至试图将上面提到的 .pipe($.changed(config.dest)) 行移到 .pipe($.sourcemaps.write('.')) 行之前。

同样,运气不好。

有人知道如何解决这个问题吗?

您的输入文件的扩展名与输出文件的扩展名不同。您需要使用 extension option 来启用 gulp-changed 以找到要比较的正确文件:

.pipe($.changed(config.dest, {extension: '.js'}))