我有一个运行Browsersync的Jekyll项目,但我遇到了一个小问题,要让我的吞噬任务按预期方式运行。这里是我的gulpfile的简化版本:通过child_process.exec命令执行gulp.js任务完成
const gulp = require('gulp');
const browserSync = require('browser-sync').create();
gulp.task('jekyll',() => {
return require('child_process').exec('bundle exec jekyll serve');
});
gulp.task('serve', ['jekyll'],() => {
browserSync.init({
proxy: 'localhost: 4000'
});
gulp.watch('_site/**/*.html').on('change', browserSync.reload);
});
gulp.task('default', ['serve']);
所期望/预期:该jekyll
任务运行和命令执行,这导致正在运行的服务器。然后运行serve
任务,这会打开一个指向已经运行的jekyll服务器的新选项卡。世界上的一切都是正确的。
究竟发生了什么:运行jekyll
任务并执行该命令。运行jekyll
任务后,立即运行serve
任务,并打开新的浏览器选项卡。该选项卡将永久旋转,因为在打开服务器时(通过jekyll)还没有运行。几秒钟后,手动刷新将使事情按预期工作,因为那时服务器正在运行。
我的主要问题是:我怎样才能防止被“完成”,直到后的bundle exec jekyll serve
命令与服务器上运行实际完成的任务jekyll
?第一次手动刷新页面是非常麻烦的,但这是一次学习新内容的机会。
这看起来很有前途!我会尽快给它一个机会并报告。 – cmegown
回调'完成'做了诡计! – eestein