Skip to content

Instantly share code, notes, and snippets.

@doowb
Last active March 17, 2016 13:33
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save doowb/d02bcee124ee9276a2b0 to your computer and use it in GitHub Desktop.
Save doowb/d02bcee124ee9276a2b0 to your computer and use it in GitHub Desktop.
Use es2015 javascript generators as assemble tasks.

Using es2015 javascript generators in assemble tasks.

Assemble is now able to directly take a generator function as a task function. This removes the need for a callback when running synchronous code inside tasks.

From

app.task('load', function(cb) {
  app.layouts(['src/layouts/**/*.hbs']);
  app.partials(['src/partials/**/*.hbs']);
  app.pages(['src/pages/**/*.hbs']);
  cb();
});

To

app.task('load', function* () {
  app.layouts(['src/layouts/**/*.hbs']);
  app.partials(['src/partials/**/*.hbs']);
  app.pages(['src/pages/**/*.hbs']);
});

This also allows using generator features like yield.

assemblefile.js

'use strict';

var assemble = require('assemble');
var thunk = require('thunkify');
var fs = require('fs');
var app = assemble();

var readFile = thunk(fs.readFile);

app.task('read', function* () {
  var contents = yield readFile('./package.json', 'utf8');
  console.log(contents);
});

app.task('default', ['read']);

module.exports = app;

output

image

'use strict';
var assemble = require('assemble');
var thunk = require('thunkify');
var fs = require('fs');
var app = assemble();
var readFile = thunk(fs.readFile);
app.task('read', function* () {
var contents = yield readFile('./package.json', 'utf8');
console.log(contents);
});
app.task('default', ['read']);
module.exports = app;
{
"name": "assemble-es2015-generators",
"description": "Use es2015 javascript generators as assemble tasks",
"main": "assemblefile.js",
"engines": {
"node": ">=4.0"
},
"private": true,
"version": "0.1.0",
"homepage": "https://github.com/assemble/assemble",
"author": "Brian Woodward (https://github.com/doowb)",
"repository": "assemble/assemble",
"bugs": {
"url": "https://github.com/assemble/assemble/issues"
},
"license": "MIT",
"files": [
"assemblefile.js",
],
"dependencies": {
"assemble": "^0.9.2",
"thunkify": "^2.1.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment