Gulp-remember似乎输出错误的路径
gulp-remember seems to output wrong path
[Using 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();
});
在源目录src上运行该命令,其中只有一个文件"myfile.js",输出文件如下:
/build/resources/resources/myfile.js
如果删除对build()的第二个调用,它将正确生成
/build/resources/myfile.js
如果我们插入第三次调用build(),它产生
/build/resources/resources/resources/myfile.js
我们如何解决这个问题?在进一步处理文件之前,难道不应该使用上次通过时的路径输出文件吗?
您应该在应用转换后调用remember
。在这个例子中:
.pipe(cached())
.pipe(rename(function(path) {path.dirname = "resources/" + path.dirname;}))
.pipe(remember())
相关文章:
- javascript window.location在检查firebug时给了我一个错误的url路径
- 最短路径算法js错误
- AngularFire 0.5美元移除.错误:Firebase.child失败:第一个参数是无效路径
- windows文件系统中的nodejs路径错误4058 ENOENT
- 路径错误中的非法字符
- 使用Raphael.js绘制双动画路径错误
- Javascript /npm安装路径错误
- 流星,NGINX子路径错误
- Grunt Dist文件夹相对路径错误
- 为什么在Durandal Get started教程中,text.js的请求路径错误?
- SVG路径错误"d"属性
- 弹出asp.net页面,javascript和路径错误404
- 在Ember项目中包含外部JS文件的路径错误(不确定)
- Extract-text-webpack-plugin输出CSS文件,图像路径错误
- Nodejs中的相对路径错误
- Webpack,新块加载路径错误
- 使用Ajax访问其他目录中的文件时出现问题,是我指定的路径错误吗
- IE8上的jQuery选择器路径错误
- 木偶.js需要.js模板路径错误
- Firebase child_added事件返回无效路径错误