2016-07-24 49 views
0

這實際上是一個嘗試使用這個:https://github.com/shakyShane/jekyll-gulp-sass-browser-sync/blob/master/gulpfile.js與命名函數。無論出於何種原因,jekyllrebuild任務將開始但未完成。當我更改的.html或.markdown控制檯輸出以下:Gulp 4和Jekyll。重建任務開始,但不會完成

[11:06:10] Starting 'jekyllrebuild'... 
[BS] Reloading Browsers... 

除此之外它工作得很好,不知道爲什麼重建任務掛起。任何幫助非常感謝,下面的gulpfile。謝謝!

var browsersync = require('browser-sync'); 
var cp   = require('child_process'); 
var gulp  = require('gulp'); 
var gutil  = require('gulp-util'); 
var sass  = require('gulp-sass'); 

var paths = { 
    html: { 
     src: './app/**/*.html', 
    }, 
    jekyll: { 
     src: './app', 
     dist: './_site', 
    }, 
    markdown: { 
     src: './app/**/*.markdown', 
    }, 
    styles: { 
     src: './app/_sass/**/*.scss', 
     dist: './app/css', 
    } 
}; 

gulp.task(jekyllbuild); 
gulp.task(jekyllrebuild, gulp.series(jekyllbuild)); 
gulp.task(serve); 
gulp.task(styles); 
gulp.task(watch); 
gulp.task('default', 
    gulp.series(
     styles, 
     jekyllbuild, 
     gulp.parallel(serve, watch)) 
); 

function jekyllbuild(done) { 
    browsersync.notify('building jekyll'); 
    return cp.spawn('jekyll.bat', ['build'], {stdio: 'inherit'}) 
     .on('close', done); 
} 

function jekyllrebuild() { 
    browsersync.reload(); 
}; 

function serve() { 
    browsersync.init({ 
     server: paths.jekyll.dist, 
     notify: true 
    }) 
} 

function styles() { 
    return gulp.src(paths.styles.src) 
     .pipe(sass().on('error', sass.logError)) 
     .pipe(gulp.dest(paths.jekyll.dist + '/css')) 
     .pipe(browsersync.stream()) 
     .pipe(gulp.dest(paths.styles.dist)) 
} 

function watch() { 
    gulp.watch(paths.styles.src, styles); 
    gulp.watch(paths.html.src, jekyllrebuild); 
    gulp.watch(paths.markdown.src, jekyllrebuild); 
} 

回答

0

此行完全是無稽之談:

gulp.task(jekyllrebuild, gulp.series(jekyllbuild)); 

你不能通過兩個函數來gulp.task()。看看gulp 3.x task that you linked你可能想要下面的gulp 4.x:

gulp.task('jekyllrebuild', gulp.series(jekyllbuild, function(cb) { 
    browsersync.reload(); 
    cb(); 
})); 

function watch() { 
    gulp.watch(paths.styles.src, styles); 
    gulp.watch(paths.html.src, gulp.series('jekyllrebuild')); 
    gulp.watch(paths.markdown.src, gulp.series('jekyllrebuild')); 
}