gulp-assemble & gulp-watch not recompiling site when changes are made to data, includes or layouts -
i'm having issues using gulp-assemble gulp-watch. want gulp watch entire assemble source directory (data, includes, layouts , pages) , recompile site when ever file changes.
i'm able working correctly pages, gulp not recompiling site when changes made data, includes or layouts files.
i've added watch task example gulpfile.js in gulp-assemble repository:
var gulp = require('gulp'); var htmlmin = require('gulp-htmlmin'); var extname = require('gulp-extname'); var assemble = require('assemble'); var middleware = require('./examples/middleware'); var gulpassemble = require('./'); // setup items on assemble object assemble.data({site: {title: 'blog'}}); assemble.data(['test/fixtures/data/*.{json,yml}']); assemble.layouts(['test/fixtures/layouts/*.hbs']); assemble.partials(['test/fixtures/includes/*.hbs']); // arbitrary middleware runs when files loaded assemble.onload(/index\.hbs/, middleware(assemble)); // render templates in `test/fixtures` gulp.task('default', function () { gulp.src('test/fixtures/pages/*.hbs') .pipe(gulpassemble(assemble, { layout: 'default' })) .pipe(htmlmin({collapsewhitespace: true})) .pipe(extname()) .pipe(gulp.dest('_gh_pages/')); }); // ============================================================ // watch task // ============================================================ gulp.task('watch', ['default'], function() { gulp.watch('test/fixtures/**/*.{hbs,yml,json}', ['default']); }); if run gulp watch , save change of .hbs files in pages directory, see gulp trigger default in terminal output, , see .html file in _gh_pages update change.
however, if save change of .hbs, .json, or .yml files in data, includes or layouts directories, see gulp trigger default in terminal output, see no changes _gh_pages .html file(s). have run gulp default task manually in order changes applied _gh_pages files.
what need change in order desired behaviour?
gulp-watch execute code inside function default task, things data , layouts reload, you'll need move pieces of code inside function (just before gulp.src).
var gulp = require('gulp'); var htmlmin = require('gulp-htmlmin'); var extname = require('gulp-extname'); var assemble = require('assemble'); var middleware = require('./examples/middleware'); var gulpassemble = require('./'); // arbitrary middleware runs when files loaded assemble.onload(/index\.hbs/, middleware(assemble)); // render templates in `test/fixtures` gulp.task('default', function () { // setup items on assemble object assemble.data({site: {title: 'blog'}}); assemble.data(['test/fixtures/data/*.{json,yml}']); assemble.layouts(['test/fixtures/layouts/*.hbs']); assemble.partials(['test/fixtures/includes/*.hbs']); gulp.src('test/fixtures/pages/*.hbs') .pipe(gulpassemble(assemble, { layout: 'default' })) .pipe(htmlmin({collapsewhitespace: true})) .pipe(extname()) .pipe(gulp.dest('_gh_pages/')); }); // ============================================================ // watch task // ============================================================ gulp.task('watch', ['default'], function() { gulp.watch('test/fixtures/**/*.{hbs,yml,json}', ['default']); });
Comments
Post a Comment