Skip to content

Instantly share code, notes, and snippets.

@andymantell
Last active August 29, 2015 14:13
Show Gist options
  • Select an option

  • Save andymantell/1bd1e0fb5f8d659bf11f to your computer and use it in GitHub Desktop.

Select an option

Save andymantell/1bd1e0fb5f8d659bf11f to your computer and use it in GitHub Desktop.
Assemble 0.6 custom grunt task
{{> html }}
{{> head }}
<body class="{{#if notification}} has-notification{{/if}}">
<div class="outer-wrapper">
<div class="inner-wrapper">
<div class="main-wrapper">
<a class="skiplink visuallyhidden focusable" href="#main" tabindex="0">
<span>Skip to main content</span>
</a>
{{> main-nav }}
<main id="main" role="main">
{{#if heroBanner}}
{{> hero-banner }}
{{/if}}
<div class="content-wrapper content-wrapper--main">
{% body %}
</div>
</main>
{{> footer }}
</div>
</div>
</div>
{{> scripts }}
</body>
</html>
var assemble = require('assemble');
var ext = require('gulp-extname');
module.exports = function(grunt) {
grunt.registerTask('assemble', 'Assemble', function() {
var done = this.async();
var site = assemble.init();
site.partials('src/core/templates/partials/**/*.hbs');
site.layouts('src/core/templates/layouts/*.hbs');
site.option('layout', 'default');
// Dummy helpers to stop errors being thrown for the moment
site.helper('author', function() {return 'here'});
site.helper('button', function() {return 'here'});
site.helper('byline', function() {return 'here'});
site.helper('compile', function() {return 'here'});
site.helper('debug', function() {return 'here'});
site.helper('icon', function() {return 'here'});
site.helper('ifCond', function() {return true});
site.helper('image', function() {return 'here'});
site.helper('loadArticle', function() {return []});
site.helper('loadAuthorArticles', function() {return []});
site.helper('navigation', function() {return 'here'});
site.helper('panel', function() {return 'here'});
site.helper('parseJSON', function() {return []});
site.helper('render', function() {return 'here'});
site.helper('renderJSON', function() {return 'here'});
site.helper('teamFiller', function() {return ''});
// Build the pattern library
site.task('demo', function() {
site
.src('src/sites/demo/pages/**/*.hbs')
.pipe(ext())
.pipe(site.dest('converted-html/demo'));
});
// Build the main site
site.task('main', function() {
site
.src('src/sites/main/pages/**/*.hbs')
.pipe(ext())
.pipe(site.dest('converted-html/main'));
});
site.run(['demo', 'main'], done);
});
};
@andymantell
Copy link
Author

Yeah, sorry, I realise it's really hard to debug this kind of stuff remotely. Here's the output of site.views.layouts from line 13 anyway:

http://pastebin.com/veijA5y8

@doowb
Copy link

doowb commented Jan 22, 2015

One thing I noticed is that in all of your sub-layouts, you're using layout: default.hbs... it should just be layout: default. If you're doing this inside your pages, then it won't be pointing to the correct layout since page frontmatter overrides the global options e.g. site.option('layout', 'default');

Another thing that I had to do was return the streams inside the assemble tasks so the run waited for them to finish before telling grunt that it was done.

I created this repo with some samples based on what you described and everything seems to be working for me with those changes.

@andymantell
Copy link
Author

Hooray! That's pretty much sort of working now :-) It's all kinds of broken still, but that's to be expected - I still need to migrate all my helpers and I daresay fix a few other things but this is a darn good start - it gets about halfway through rendering now and the output all looks correctish and well formed. So, now I just need to finish the migration...

Thankyou so much for your help, is massively appreciated. I'll keep you posted on my progress... :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment