A CLI tool to generate a site from templates + data from a contentful space
To build a site from a space using the templates in templatesFolder
contentful-static -a yourContentDeliveryApiAccessToken yourSpaceId templatesFolder/ dest/
Each entry in your contentful data is matched against a template by checking it's contentType
name.
Availiable in the template context are
Name | |
---|---|
entry | The entry for this template |
content | The entire contentful data object. |
entries | All entries |
includes | HTML data for all entries already rendered. Key is id. |
include(entry) | A function (shorthand for direct usage of include). Takes either a list of entries or an entry and returns it's html |
debug(obj) | Print debug for an object |
As a default contentful-static
uses the template language nunjucks.
But since it uses consolidate in theory any other
templating language can be used.
npm install -g contentful-static
var contentfulStatic = require('contentful-static');
contentfulStatic.config({
// Path to templates.
templates: 'templates',
// Your Contentful space ID
space: 'my12space34id',
// Contentful Content Delivery API Access Token
accessToken: '5fdae8a3myacc3sst0ken573962'
});
// With promise
contentfulStatic.sync().then(function(json) {
console.log('contentful-static: data stored successfully!', json);
}, function (err) {
console.log('contentful-static: data could not be fetched');
});
// With callback
contentfulStatic.sync(function(err, json) {
if(err) {
console.log('contentful-static: data could not be fetched');
return false;
}
console.log('contentful-static: data fetched successfully!', json);
});
// With promise
contentfulStatic.render(json).then(function(htmls) {
// Rendered data is an object where key is entry sys id and value is its HTML
console.log(htmls);
}, function (err) {
console.log('Could not render templates');
});
// With callback
contentfulStatic.render(json, function(err, htmls) {
// Handle callback
});