[英]Gulp not working
我正在嘗試運行在jekkyl模板上發現的以下gulp。 我在Windows 8.1的節點4上運行,我不明白為什么每次我得到以下信息:
events.js:141
throw er; //Unhandled 'error' event
^
我的印象是與Windows有關,因為當我在linux上運行時,我沒有遇到任何問題。
這是大口吃:
gulp.task('jekyll-build', function (done) {
browserSync.notify(messages.jekyllBuild);
return cp.spawn('jekyll', ['build'], {stdio: 'inherit'})
.on('close', done);
});
gulp.task('jekyll-rebuild', ['jekyll-build'], function () {
browserSync.reload();
});
gulp.task('browser-sync', ['jekyll-build'], function() {
browserSync({
server: {
baseDir: '_site'
}
});
});
gulp.task('stylus', function(){
gulp.src('src/styl/main.styl')
.pipe(plumber())
.pipe(stylus({
use:[koutoSwiss(), prefixer(), jeet(),rupture()],
compress: true
}))
.pipe(gulp.dest('_site/assets/css/'))
.pipe(browserSync.reload({stream:true}))
.pipe(gulp.dest('assets/css'))
});
gulp.task('js', function(){
return gulp.src('src/js/**/*.js')
.pipe(plumber())
.pipe(concat('main.js'))
.pipe(uglify())
.pipe(gulp.dest('assets/js/'))
});
gulp.task('imagemin', function() {
return gulp.src('src/img/**/*.{jpg,png,gif}')
.pipe(plumber())
.pipe(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true }))
.pipe(gulp.dest('assets/img/'));
});
gulp.task('watch', function () {
gulp.watch('src/styl/**/*.styl', ['stylus']);
gulp.watch('src/js/**/*.js', ['js']);
gulp.watch('src/img/**/*.{jpg,png,gif}', ['imagemin']);
gulp.watch(['*.html', '_includes/*.html', '_layouts/*.html', '_posts/*'], ['jekyll-rebuild']);
});
gulp.task('default', ['js', 'stylus', 'browser-sync', 'watch']);
有人知道為什么嗎,可以幫助我理解嗎?
基本上,主要問題在於以下幾行:
gulp.task('default', ['js', 'stylus', 'browser-sync', 'watch']);
陣列中的任務同時發生。 如果腳本和樣式通常可以同時處理,則browserSync幾乎無法提供可能尚未創建的文件夾。 您必須重新構建過程才能在此處添加一些同步。
我還看到另一個問題:
// stylus task
.pipe(gulp.dest('_site/assets/css/'))
.pipe(browserSync.reload({stream:true}))
.pipe(gulp.dest('assets/css'))
要么
.pipe(gulp.dest('assets/js/'))
要么
.pipe(gulp.dest('assets/img/'));
您提供_site
文件夾,但有時將復制到_site/assets/
,有時復制到_site/assets/
assets/
。 另外,您應該刪除stylus
任務中的最后一個gulp.dest
。
很高興您嘗試提供幫助。 我很幸運地發現問題是Windows運行腳本的方式。 我剛剛添加了一個“ .bat”,如下所示:
gulp.task('jekyll-build', function (done) {
browserSync.notify(messages.jekyllBuild);
return cp.spawn('jekyll.bat', ['build'], {stdio: 'inherit'})
.on('close', done);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.