Nico Configuration

Nico supports two formats of configuration, Javascript and JSON. JSON is standard, but Javascript is more flexible.

Basic

The required fields of nico:

{
    "source": "content",
    "output": "_site",
    "permalink": "{{filename}}.html",
    "theme": "_themes/one",
    "writers": [
        "nico.PostWriter",
        "nico.StaticWriter",
        "nico.FileWriter"
    ]
}

In Javascript format:

exports.source = "content"
exports.output = "_site"
exports.permalink = "{{filename}}.html"

// you can use node library
var path = require('path')
exports.theme = path.join(__dirname, 'one')

exports.writers = [
    'nico.PostWriter',
    'nico.StaticWriter',
    'nico.FileWriter'
]

You can set source, output, permalink, theme in the terminal interface, get more help:

$ nico build -h

Set the permalink style you want. Here are some tips:

{{filename}}
{{filename}}.html

{{directory}}/{{filename}}
{{directory}}/{{filename}}.html

{{pubdate.year}}/{{filename}}
{{pubdate.year}}/{{filename}}.html

Writer

Writer is the tool for writing html into your output directory. For example:

  • PostWriter will write the post html
  • FileWriter will copy files from source to output

Built-in writers:

  • nico.PostWriter - generate a post
  • nico.PageWriter - generate a page
  • nico.FileWriter - copy non-post files
  • nico.StaticWriter - copy static files in theme
  • nico.ArchiveWriter - generate archive
  • nico.YearWriter - generate archive by years
  • nico.TagWriter - generate archive by tags
  • nico.DirectoryWriter - generate archive by direcotories
  • nico.FeedWriter - generate feed

Cache

For large projects, you would like a cache for fast building. Set a cachedir in your config file:

cachedir: '.cache'

perpage

Reset number of post on perpage, default is 20.

post_template

Reset the post template name, default is post.

page_template

Reset the page template name, default is page.

archive_template

Reset the archive template name, default is archive.

archive_output

Reset the archive output, default is index.html.

directory_template

Reset the directory template name, default is archive.

year_template

Reset the year template name, default is archive.

tag_template

Reset the tag template name, default is archive.

feed_template

Reset the feed template name, default is feed.

feed_output

Reset the feed output, default is feed.xml.

process_write

This is a function for processing file write action. Define in your config file: nico.js

exports.process_write = function(content, filename) {
    if (/\.html$/.test(filename)) {
        return compressHTML(content);
    }
    return content;
}

process_copy

This is a function for procssing file copy action. Define in your config file: nico.js

exports.process_copy = function(buf, filename) {
    if (/\.css$/.test(filename)) {
        return compressCSS(buf.toString());
    }
    return buf;
}
Fork me on GitHub