Gulp'watch'不保存使用gulp-swig

时间:2015-05-15 18:40:13

标签: gulp gulp-watch swig-template

我曾多次使用过Gulp,但这个问题让我感到非常难过。我有一个render任务来保存通过gulp-swig传输的HTML模板。当通过gulp render手动调用时,它可以正常工作,但在gulp.watch触发任务时不会保存。因此,为了澄清,观察者触发任务,但渲染的文件实际上并未保存到目的地。

我已将问题归结为以下问题,从我的gulpfile,axed管道工,上下文数据等中删除所有其他任务。任何帮助表示赞赏!

var gulp        = require( 'gulp' ),
    browserSync = require( 'browser-sync' ).create(),
    rename      = require( 'gulp-rename' ),
    swig        = require( 'gulp-swig' ),
    reload      = browserSync.reload;

gulp.task( 'render', function() {
    return gulp.src( './dev/template.html' )
        .pipe( swig() )
        .pipe( rename( 'index.html' ) )
        .pipe( gulp.dest( './preview' ) )
        .on( 'end', reload );
});

gulp.task( 'serve', function() {
    browserSync.init( { server: './preview' } );

    gulp.watch( './dev/*.html',  [ 'render' ] );
});

gulp.task( 'default', [ 'serve' ] );

1 个答案:

答案 0 :(得分:1)

Duh,让它运转起来。似乎swig默认缓存模板(?),所以实际上它保存了文件,但它是相同的。我注意到另一篇关于swig的(无关)帖子中有一个“缓存”选项。所以,我需要传递一个选项对象,如下所示:

        .pipe( swig({ 
            defaults: { cache: false }
        }) )