在'html'任务文件index.html之后仍然不存在Gulp

时间:2016-01-31 08:47:45

标签: configuration gulp task

我运行简单的配置:

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

2 个答案:

答案 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());
});

这解决了我的问题。