我有一個運行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