我曾多次使用过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' ] );
答案 0 :(得分:1)
Duh,让它运转起来。似乎swig默认缓存模板(?),所以实际上它保存了文件,但它是相同的。我注意到另一篇关于swig的(无关)帖子中有一个“缓存”选项。所以,我需要传递一个选项对象,如下所示:
.pipe( swig({
defaults: { cache: false }
}) )