gulp-changed有不同的行为

时间:2015-07-03 12:43:27

标签: html svg sprite gulp

在我的网站构建过程中,我使用gulp-changed来防止在不必要时执行所有任务。但是,即使声明类似,有时也会有不同的行为。

有谁知道我做错了什么?

案例1 :使用partials构建htlm / php。 工作正常!如果我连续两次运行

,则第一次执行任务流程
gulp.task('pages', function () {

    var toBuild = src + config.pages.src_pages; // many php/html files
    var partials = src + config.pages.src_partials; // "to be included"
    var DEST = target;

    return gulp.src([toBuild, "!" + partials])
        .pipe(changed(DEST))
        .pipe(fileinclude({  prefix: '@@', basepath: '@file' }))
        .pipe(size())
        .pipe(gulp.dest(DEST));
});

案例2 :从多个svg文件构建SVG精灵。 不起作用!如果我连续两次运行

,任务会再次运行
gulp.task('vector', function () {

   var DEST = target + config.assets.images.vector_dest; 
   var configsvg = { // ... config stuff // };

   return gulp.src(src + config.assets.images.vector_src)
        .pipe(changed(DEST))
        .pipe(svgo())
        .pipe(svgSprite(configsvg)).on('error', function (error) {
            console.log(error);
        })
        .pipe(size())
        .pipe(gulp.dest(DEST));
});

2 个答案:

答案 0 :(得分:0)

解决方案是使用gulp-newer模块以防万一到一个"文件编译(连接等...)

谢谢Lim H. gulp-newer vs gulp-changed

答案 1 :(得分:0)

我还建议gulp-newy,您可以在其中操作自己函数中的路径和文件名。然后,只需使用该函数作为newy()的回调。这使您可以完全控制要比较的文件。

这将允许1:1或多对1比较。

newy(function(projectDir, srcFile, absSrcFile) {
  // do whatever you want to here. 
  // construct your absolute path, change filename suffix, etc. 
  // then return /foo/bar/filename.suffix as the file to compare against
}

enter image description here