Gulp任务没有等待上一个任务完成
Gulp task not waiting the completion of the previous task
我有一个gulp任务,它使用流来编写修改后的文件(使用gulp-rev),另一个任务使用以前编写的清单文件来替换html文件中的变量。
我的第一个任务:
gulp.task('scripts', function() {
// other stuff...
var b = browserify(mainscript);
b.external('External')
.transform(babelify)
.bundle()
.pipe(source('app.js'))
.pipe(buffer())
.pipe(rev())
.pipe(gulp.dest(dest))
.pipe(rev.manifest({
path: 'appjs-manifest.json'
}))
.pipe(gulp.dest(dest))
}
前面的任务,将编写一个名为"app-34f01b9d.js"的文件和一个名为"appjs-manifest"的清单文件。json的包含:
{
"app.js": "app-34f01b9d.js"
}
我的第二个任务,理论上,应该等待第一个任务完成后再开始:
gulp.task('renameindex',['scripts'], function () {
var paths = gulp.paths;
var jsonContent = JSON.parse(fs.readFileSync(paths.buildDest+'/public/scripts/appjs-manifest.json', 'utf8'));
var src=paths.srcDir+"/index.hbs";
var appjs=jsonContent["app.js"];
console.log("app.js",appjs)
return gulp.src(src)
.pipe(handlebars({appjs:appjs}, null))
.pipe(rename('index.html'))
.pipe(gulp.dest(paths.buildDest));
});
任务应该读取manifest文件,并将"app-34f01b9d.js"替换为生成文件"index.html"的车把柄模板中的变量{appjs}}。
发生的情况是javascript文件和manifest文件被正确写入,但是第二个任务执行时没有等待manifest文件被写入,因此抓取了错误的manifest文件内容(之前执行的一个)。
您的scripts
任务没有返回任何值。当你没有返回任何东西时,gulp没有办法知道任务何时完成,因此继续下一个任务。
简单地说
gulp.task('scripts', function() {
// other stuff...
var b = browserify(mainscript);
return b.external('External')
...
如果你的任务正在做一些其他的事情而不是gulp管道,你可以手动调用作为参数传递给任务的回调:
gulp.task('someTask', function(done) {
...
done();
}
相关文章:
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 如何将值传递到上一个html页面
- Javascript获取上一个元素的内容
- 禁用旋转木马中的下一个按钮和上一个按钮
- 引用vue.js中v-for中的上一个值
- DOM导航-上一个同级未定义
- 构建JS测试,警报窗口重复上一个Q,而不是问下一个Q
- 如何在用户返回和上一个按钮时刷新下拉列表
- 删除“;上一个“;以及“;下一个“;基于当前幻灯片
- 简单的垂直上一个和下一个按钮代码点击上下移动jQuery
- HTML5历史记录-返回上一个完整页面按钮
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何选择给定类的上一个元素
- 用键盘分页jQuery下一个和上一个控件.触发器('点击')不'不起作用
- 如何使请求等待上一个请求完成
- 当我单击下一个或上一个按钮时,datatable显示旧值
- 使用reactjs setState回调获取上一个输入值的计算值
- JQuery关注上一个点击的输入错误
- 如何将外部 JSON 数据从上一个任务中生成的文件传递到任务
- Gulp任务没有等待上一个任务完成