4

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

我在这里使用 Dan Wahlin 建议的 TypeScript 工作流程。

所以我将 gulp-changed 实现为 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('.'))行。

再次,没有运气。

任何人都知道如何解决这个问题?

4

1 回答 1

3

您的输入文件具有与输出文件不同的扩展名。您需要使用该extension选项来启用gulp-changed以查找要比较的正确文件:

.pipe($.changed(config.dest, {extension: '.js'}))
于 2015-07-26T23:58:11.840 回答