var assemble = require('assemble'); var matter = require('gray-matter'); var path = require('path'); var file = require('fs-utils'); var counter; assemble.config({ options: { data: ['src/data/**/*.{json,yml}'] } }); assemble.task('update-counter', function () { assemble // update the counter from the data .use(function (environment) { counter = require('src/data/counter.json'); counter.count++; }) // write the counter to a file for storage .dest(function (environment) { file.writeJSONSync('src/data/counter.json', counter); }); }); assemble.task('site', function () { var options = { flatten: true, ext: '.html' }; assemble .config({options: options}) .src('src/templates/pages/*.hbs') .use(function (environment) { environment.page.list.forEach(function (page) { page.context.set('counter', counter); var rendered = page.view.render(); page.view(rendered); }); }) .dest('dist/'); }); // set up a default task assemble.task('default', ['update-counter', 'site']); // run the default task assemble.run();