我运行简单的配置:
gulp.task('html', function() {
gulp.src(config.paths.html)
.pipe(gulp.dest(config.paths.dist))
.pipe(connect.reload());
});
gulp.task('connect', function() {
server.listen(config.port);
lrserver.listen(config.livereloadport);
});
gulp.task('open', ['connect'], function() {
gulp.src('dist/index.html')
.pipe(open({ uri: config.devBaseUrl + ':' + config.port + '/'}));
});
gulp.task('default', ['html', 'open']);
但是,第一次在'open'任务文件index.html上仍然不存在,只有第二次创建它并且任务'open'将成功执行。我的配置出了什么问题?
我添加了一个控制台日志:
D:\Projects\demo>gulp
[11:01:13] Using gulpfile D:\Projects\demo\gulpfile.js
[11:01:13] Starting 'connect'...
[11:01:13] Finished 'connect' after 4.33 ms
[11:01:13] Starting 'html'...
[11:01:13] Finished 'html' after 9.03 ms
[11:01:13] Starting 'open'...
[11:01:13] Finished 'open' after 3.14 ms
[11:01:13] Starting 'default'...
[11:01:13] Finished 'default' after 9.82 μs
答案 0 :(得分:0)
您的任务取决于彼此。你应该让'打开'取决于'html'所以ot会等待它完成:
gulp.task('html', function() {
gulp.src(config.paths.html)
.pipe(gulp.dest(config.paths.dist))
.pipe(connect.reload());
});
gulp.task('connect', function() {
server.listen(config.port);
lrserver.listen(config.livereloadport);
});
gulp.task('open', ['connect', 'html'], function() {
gulp.src('dist/index.html')
.pipe(open({ uri: config.devBaseUrl + ':' + config.port + '/'}));
});
gulp.task('default', ['open']);
答案 1 :(得分:0)
所以,我找到了解决方案。默认情况下,gulp中的所有任务都是并行运行的。因此,如果要在系列中运行它们,则需要任务依赖项,如前所述 eburger :
gulp.task('open', ['connect', 'html'], function() {
gulp.src('dist/index.html')
.pipe(open({ uri: config.devBaseUrl + ':' + config.port + '/'}));
});
但除此之外,您还需要知道上一个任务何时完成(添加返回):
gulp.task('html', function() {
return gulp.src(config.paths.html)
.pipe(gulp.dest(config.paths.dist))
.pipe(connect.reload());
});
这解决了我的问题。