在我的网站构建过程中,我使用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));
});
答案 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
}