2017-05-03 69 views
0

我正在使用Jekyll + Gulp構建環境。因此,使用下面的gulpfile.js,構建過程首先生成一個dist/css文件夾,其中包含已編譯的CSS,然後清除整個dist文件夾,以便將jekyll build結果放入其中。所以,我無法編譯dist文件夾中的scss文件,因爲每次jekyll都完全清除它。Jekyll與Gulp清除生成文件夾

var gulp  = require('gulp'); 
var browserSync = require('browser-sync'); 
var sass  = require('gulp-sass'); 
var child  = require('child_process'); 


gulp.task('jekyll', function (done) { 
    return child.spawn('jekyll' , ['build']).on('close', done); 
}); 

gulp.task('jekyll-rebuild', ['jekyll'], function() { 
    browserSync.reload(); 
}); 

gulp.task('browser-sync', ['sass', 'jekyll'], function() { 
    browserSync({ 
     server: { 
      baseDir: 'dist' 
     } 
    }); 
}); 

gulp.task('sass', function() { 
    return gulp.src('src/_sass/theme.scss') 
     .pipe(sass({ 
      includePaths: ['scss'], 
      onError: browserSync.notify 
     })) 
     .pipe(browserSync.reload({stream:true})) 
     .pipe(gulp.dest('dist/css')); 
}); 

gulp.task('watch', function() { 
    gulp.watch('src/_sass/*.scss', ['sass']); 
    gulp.watch(['src/*.html', 'src/_layouts/*.html', 'src/_includes/*'], ['jekyll-rebuild']); 
}); 

gulp.task('default', ['browser-sync', 'watch']); 
+0

傑奇可以本地編譯青菜,爲什麼使用一飲而盡這個? – marcanuy

+0

我不是隻用於sass – user6542453

回答

0

我必須避免並行運行jekyll任務與stylesscripts所以我使用了一個runSequence

gulp.task('build',() => { 
    runSequence('jekyll', ['styles', 'scripts']); 
}); 

gulp.task('default', ['build', 'browser-sync', 'watch']); 
0

在你化身的配置需要聲明你想保留的文件夾:

keep_files: [ css, build ] 

當重挫網站目標,保持選定的文件。對於不是由jekyll生成的文件很有用;例如文件或由您的構建工具生成的資產。路徑是相對於目的地的。

https://jekyllrb.com/docs/configuration/