【问题标题】:Gulp 'watch' not saving files rendered with gulp-swigGulp 'watch' 不保存使用 gulp-swig 渲染的文件
【发布时间】:2015-05-16 03:24:26
【问题描述】:

我已经使用 Gulp 很多次了,但是这个问题让我很困惑。我有一个render 任务来保存通过gulp-swig 传输的HTML 模板。当通过gulp render 手动调用时,它工作得非常好,但在gulp.watch 触发任务时不会保存。因此,澄清一下,观察者确实触发了任务,但渲染的文件实际上并没有保存到它的目的地。

我已将问题归结为以下问题,从我的 gulpfile、砍掉的管道工、上下文数据等中删除了所有其他任务。感谢任何帮助!

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' ] );

【问题讨论】:

  • 我现在已经确认 swig() 模块是罪魁祸首,但还没有解决方案..

标签: gulp gulp-watch swig-template


【解决方案1】:

呵呵,搞定了。 swig 似乎默认缓存了模板(?),所以它实际上是在保存文件,但它是相同的。我注意到另一个(不相关的)关于 swig 的帖子中的“缓存”选项起到了作用。所以,我需要传入一个选项对象,如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多