PageFrost 1.1.1
Grunt task to render Handlebars and Markdown templates using front-matter metadata.
Install
npm install pagefrost
Config
grunt grunt
target.data
Global data injected in all templates, can be either a .json
file, a .yml
file, a .js
file or an object, default {}
.
target.options.base_url
Base url used by the url
helper.
target.options.rewrite_url
If true
, create .htaccess
and remove .html
extension in url
helper.
target.src.pages
Folder where templates are located, default src/pages
.
target.src.layouts
Folder where layouts are located, default src/layouts
.
target.src.partials
Folder where partials are located, default src/partials
.
target.src.helpers
Folder where js helpers are located, default src/helpers
.
The file loaded must be a factory generating the helper:
module { return { /* do something here */ }}
target.dest
Folder where compiled pages will be written, default dist
.
Usage
PageFrost will render all templates located in src/pages
to dist
, these templates can be either HTML file, Handlebars file or Markdown file.
Front-matter
All templates are enhanced with the front-matter parsing and can define custom vars :
src/pages/index.html
---name: John--- Ho, hello {{name}} !
dist/index.html
Ho, hello John !
Layout
Layout file can be defined in vars (ex. default
, located in src/layouts
):
src/pages/index.html
---layout: defaultname: John--- Ho, hello {{name}} !
src/layouts/default.html
{{{$body}}}
dist/index.html
Ho, hello John !
Publish state
You can choose to exclude a file from rendering by setting the publish
var to false
:
---publish: false---
Collections
You can categorize a template and find it in the $collections
, this act as a category:
src/blog/note-1.html
---collection: blog--- Hey I'm a blog post :)
src/blog.html
Blog:{{#each $collections.blog}}- {{this.url}} <!-- blog/note-1.html -->{{/each}}
Runtime vars
PageFrost will provide some runtime data:
id
current page's idurl
current page's url$meta
current page's metadata (src
,dest
,ext
,type
...)$pages
all published pages$collections
all collections
Built-in helpers
PageFrost comes with built-in helpers:
url
usebase_url
to generate valid url:{{url 'foo/bar.html'}} -> 'http://www.base.url/foo/bar.html'
loop
iterate over a collection sorted by property:
{{#loop $collections.blog 'date'}} {{this.title}}{{/loop}}