gulp-记得好像输出了错误的路径
gulp-remember seems to output wrong path
[使用 gulp 3.9.0,gulp-缓存 1.1.0,gulp-记住 0.3.0,gulp-重命名 1.2.2]
我们使用 gulp 作为构建工具,并且 gulp 与 gulp 一起缓存 - 请记住允许快速增量重建。正在构建的部分文件必须移动到不同的输出目录,并且这必须在流中发生(即不在 gulp.dest() 中),因为我们之后会压缩结果。为此,我们使用 gulp-重命名。
但是,当构建脚本被多次调用时(gulp.watch() 用于增量重建),它似乎多次应用 gulp-重命名转换。看起来 gulp-remember 实际上并没有使用上次看到的路径输出文件,而是使用 gulp-重命名步骤后获得的路径输出文件。
我已将问题缩小到以下脚本:
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();
});
运行 这在只有一个文件的源目录 src 上 "myfile.js" 产生输出文件:
/build/resources/resources/myfile.js
如果删除对 build() 的第二次调用,它会正确生成
/build/resources/myfile.js
如果我们插入对 build() 的第三次调用,它会产生
/build/resources/resources/resources/myfile.js
我们该如何解决这个问题?不应该 gulp-记得在进一步处理之前输出带有上次通过它时的路径的文件吗?
您应该在应用转换后调用 remember
。所以在这种情况下:
.pipe(cached())
.pipe(rename(function(path) {path.dirname = "resources/" + path.dirname;}))
.pipe(remember())
[使用 gulp 3.9.0,gulp-缓存 1.1.0,gulp-记住 0.3.0,gulp-重命名 1.2.2]
我们使用 gulp 作为构建工具,并且 gulp 与 gulp 一起缓存 - 请记住允许快速增量重建。正在构建的部分文件必须移动到不同的输出目录,并且这必须在流中发生(即不在 gulp.dest() 中),因为我们之后会压缩结果。为此,我们使用 gulp-重命名。
但是,当构建脚本被多次调用时(gulp.watch() 用于增量重建),它似乎多次应用 gulp-重命名转换。看起来 gulp-remember 实际上并没有使用上次看到的路径输出文件,而是使用 gulp-重命名步骤后获得的路径输出文件。
我已将问题缩小到以下脚本:
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();
});
运行 这在只有一个文件的源目录 src 上 "myfile.js" 产生输出文件:
/build/resources/resources/myfile.js
如果删除对 build() 的第二次调用,它会正确生成
/build/resources/myfile.js
如果我们插入对 build() 的第三次调用,它会产生
/build/resources/resources/resources/myfile.js
我们该如何解决这个问题?不应该 gulp-记得在进一步处理之前输出带有上次通过它时的路径的文件吗?
您应该在应用转换后调用 remember
。所以在这种情况下:
.pipe(cached())
.pipe(rename(function(path) {path.dirname = "resources/" + path.dirname;}))
.pipe(remember())