【问题标题】:gulp-remember seems to output wrong pathgulp-remember 似乎输出了错误的路径
【发布时间】:2020-12-06 18:03:21
【问题描述】:

[使用 gulp 3.9.0,gulp-cached 1.1.0,gulp-remember 0.3.0,gulp-rename 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

我们如何解决这个问题? gulp-remember 不应该在文件被进一步处理之前输出上次通过文件时的路径吗?

【问题讨论】:

    标签: javascript gulp gulp-rename gulp-cached


    【解决方案1】:

    您应该在应用转换后调用remember。所以在这种情况下:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多