2014-01-11 61 views
4

swig.js模板文件我stucked有看我的Swig.js HTML模板和编译他们的每一个变化的问题,我用Gulp.js任务运行为了这个目的。这里是我的gulpfile.jsGulp.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每一个变化我得到了更新的文件在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 

也许我错过了一些缓存选项或类似的?

+1

参见[这个问题](https://github.com/colynb/gulp-痛饮/拉/ 1)。 Swig默认缓存模板,至今还没有办法用'gulp-swig'关闭缓存。 – robertklep

+0

@robertklep谢谢!希望这个家伙很快就会合并! – Kosmetika

回答

12

Gulp-Swig已更新为允许禁用缓存选项 - 以及设置其他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')); 
}); 
+0

在这个版本中引入了gulp-swig? – Ian

+0

看起来像是v0.1.0 https://github.com/colynb/gulp-swig/commit/bc677e8d7ae30a90cba757fd7098a9332ef17404 –

+0

太棒了,谢谢。只是想检查我正在运行正确的版本。谢谢你吞口水怪顺便说一句。 – Ian

3

编辑:配置可能不再工作按照迈克·艾斯克的评论

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

swig = require("swig"); 

swig.setDefaults({ 
    cache: false 
}); 

app = express(); 

app.set('view cache', false); 
+0

谢谢,这工作! – Jorre

+0

这不再适用于'gulp-swig' 0.7.4 ... –