gulp-remember似乎输出错误路径

qybjjes1  于 2022-12-08  发布在  Gulp
关注(0)|答案(1)|浏览(86)

【使用吞咽3.9.0,吞咽缓存1.1.0,吞咽记忆0.3.0,吞咽重命名1.2.2】
我们使用gulp作为构建工具,gulp-cached和gulp-remember一起使用以实现快速增量重建。构建中的部分文件必须被移动到不同的输出目录,并且这必须在流中进行(即不在gulp.dest()中),因为我们随后会压缩结果。我们使用gulp-rename来完成这一任务。
然而,当构建脚本被多次调用时(gulp.watch()用于增量重建),它似乎会多次应用gulp-rename转换。看起来gulp-remember实际上并不是用上次看到的路径输出文件,而是用在gulp-rename步骤之后得到的路径。
我已经将问题范围缩小到以下脚本:

var gulp = require('gulp');
var cached = require('gulp-cached');
var remember = require('gulp-remember');
var rename = require('gulp-rename');

function build() {
    gulp.src("src/**")
        .pipe(cached())
        .pipe(remember())
        .pipe(rename(function(path) {path.dirname = "resources/" + path.dirname;}))
        .pipe(gulp.dest('build/'));
}

gulp.task('default', [], function() {
    build();
    build();
});

在只有一个文件"myfile.js"的源目录src上运行此命令将生成输出文件:

/build/resources/resources/myfile.js

如果删除了对build()的第二个调用,则会正确地生成

/build/resources/myfile.js

如果我们插入第三个build()调用,它将生成

/build/resources/resources/resources/myfile.js

我们如何解决这个问题呢?难道不应该在进一步处理之前,用上次通过时的路径输出文件吗?

vwkv1x7d

vwkv1x7d1#

在应用转换后,您应该调用remember

.pipe(cached())
.pipe(rename(function(path) {path.dirname = "resources/" + path.dirname;}))
.pipe(remember())

相关问题