Gulp.js – 观察并编译swig.js模板文件

我被困在看着我的Swig.js html模板并在每次更改时编译它们的问题,我使用了Gulp.js任务运行器。 这是我的gulpfile.js

var gulp = require('gulp'); var myth = require('gulp-myth'); var swig = require('gulp-swig'); var nodemon = require('gulp-nodemon'); gulp.task('styles', function () { gulp.src('./myth/*.css') .pipe(myth()) .pipe(gulp.dest('./client/css')); }); gulp.task('templates', function () { gulp.src('./views/*.html') .pipe(swig({ load_json: true })) .pipe(gulp.dest('./client')); }); gulp.task('server', function () { gulp.run('styles'); gulp.run('templates'); gulp.src('./server.js').pipe(nodemon()); gulp.watch('./myth/*.css', function () { gulp.run('styles'); }); gulp.watch('./views/*.html', function () { gulp.run('templates'); }); }); 

神话任务样式运行良好 – myth/*.css每一个变化myth/*.css我得到更新的文件在client/css/ ..

但称为模板的任务只给出结果一次。当我改变views/index.html文件在client/index.html保持不变。 在我的控制台中,我看到模板任务已经运行,但结果仍然相同。

 MacBook-Pro-Dmitri:slick-grid dmitri$ gulp server [gulp] Using file /Users/dmitri/github/slick-grid/gulpfile.js [gulp] Working directory changed to /Users/dmitri/github/slick-grid [gulp] Running 'server'... [gulp] Running 'styles'... [gulp] Finished 'styles' in 4.02 ms [gulp] Running 'templates'... [gulp] Finished 'templates' in 1.29 ms [gulp] Running 'watch'... [gulp] Finished 'watch' in 7.23 ms [gulp] Finished 'server' in 16 ms >> Strata web server version 0.20.1 running on node 0.10.21 >> Listening on 0.0.0.0:9000, CTRL+C to stop // Here I changed my views/index.html, task is ran as you see (but dest file won't be updated): [gulp] Running 'templates'... [gulp] Finished 'templates' in 668 μs 127.0.0.1 - - [11/Jan/2014:15:43:20 +-200] "GET / HTTP/1.1" 200 511 127.0.0.1 - - [11/Jan/2014:15:43:20 +-200] "GET /css/reset.css HTTP/1.1" 200 1419 127.0.0.1 - - [11/Jan/2014:15:43:20 +-200] "GET /css/app.css HTTP/1.1" 200 865 127.0.0.1 - - [11/Jan/2014:15:43:20 +-200] "GET /fonts/likeastore-icon-font.ttf HTTP/1.1" 200 15052 

也许我错过了一些caching选项或类似?

Gulp-Swig已更新为允许禁用caching选项 – 以及设置其他swig默认值,如下所示。

 gulp.task('templates', function() { gulp.src('./views/*.html') .pipe(swig({ load_json: true, defaults: { cache: false, locals: { site_name: "My Blog" } } })) .pipe(gulp.dest('./client')); }); 

编辑: configuration可能不再按照Mike Aski的评论工作

我有一个类似的问题, gulp-livereload和tiny-lr刷新页面,但没有显示更新的模板。 我没有使用gulp-swig (虽然这看起来像一个很好的解决scheme),所以我只是改变了app.js

 swig = require("swig"); swig.setDefaults({ cache: false }); app = express(); app.set('view cache', false);