grunt-captain
v1.0.0
Published
Static site generator for prototyping front-end projects
Downloads
9
Readme
grunt-captain
Static site generator for prototyping front-end projects
How it works
Captain uses Swig as a template engine and adds some SSG functionality. You can pass data to the template from global grunt config.
{% set data = {
title: 'Homepage',
homepage: true
} %}
<h1>{{ data.title }}</h1>
{% if data.homepage %}
<p>This is homepage</p>
{% endif %}
More about swig templates in documentation.
Utils
Util Object is injected into all templates.
$.pages
Type: Array
List of all pages path.
<ul>
{% for path in $.pages %}
<li><a href="{{path}}">{{path}}</a></li>
{% endfor %}
</ul>
Getting Started
This plugin requires Grunt.
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-captain --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-captain');
The "captain" task
Run this task with the grunt captain
command.
Task targets, files and options may be specified according to the grunt Configuring tasks guide.
Options
data
Type: Object
Default: {}
A global data object which is passed to all page templates.
Usage Examples
Default Options
In this example, .swig
templates from tpl/page/
are compiled to .html
files.
grunt.initConfig({
captain: {
compile: {
files: [{
expand: true, // Enable dynamic expansion.
cwd: 'tpl/page/', // Src matches are relative to this path.
src: ['*.swig'], // Actual pattern(s) to match.
dest: 'www/', // Destination path prefix.
ext: '.html', // Dest filepaths will have this extension.
extDot: 'first' // Extensions in filenames begin after the first dot
}]
}
}
})
Custom Options
In this example, we set global data option env.dev
for differences between production and development build.
grunt.initConfig({
captain: {
compile: {
options: {
data: {
env: {
dev: true
}
}
},
files: [{
expand: true, // Enable dynamic expansion.
cwd: 'tpl/page/', // Src matches are relative to this path.
src: ['*.swig'], // Actual pattern(s) to match.
dest: 'www/', // Destination path prefix.
ext: '.html', // Dest filepaths will have this extension.
extDot: 'first' // Extensions in filenames begin after the first dot
}]
}
}
})
Release History
- 2015-06-19 1.0.0 Rewrite data parsing to swig internal
set
tag. - 2015-05-19 0.2.0 added util ($) object with prefilled $.pages Array to all templates, remove caching (for watchers)
- 2015-05-15 0.1.1 replace lodash dependency with lodash.merge
Task submitted by Jan Panschab
License
Copyright (c) 2015 Actum. Licensed under the MIT license.