Nanoc 3.0


I’m happy to announce the final release of nanoc 3.0, the latest
version of nanoc, a web publishing tool aimed at small to medium-sized
static or semi-static web sites.

You can install it using Rubygems:

sudo gem install nanoc3

If you are new to nanoc, I recommend checking out the tutorialtut
and, if you need more, the manualman.

If you have used nanoc 2.x before, the tutorialtut is still a very
good resource. You’ll definitely want to check out the migration
guidemig, and perhaps the manualman as well.

Compatibility with nanoc 2.x

nanoc 3.0 is not backward compatible with previous nanoc versions.
This is deliberate: focus on the future, leave the past behind. A
nanoc 2.x site cannot be compiled with nanoc 3.0.

Fortunately, nanoc 2.x and 3.0 can be installed side by side. The
nanoc 2.x commandline tool is called nanoc while the nanoc 3.0 one
is called nanoc3; similarly, the nanoc 2.x namespace is Nanoc and
the nanoc 3.0 one is Nanoc3. In other words, you can easily use both
nanoc 2.x and 3.0 simultaneously.

New Features

Here’s a short list with the biggest additions to nanoc 3.0:

  • Multiple data sources so you can load data from multiple locations–
    for example, Twitter, Delicious and

  • Filter arguments so you can pass extra arguments when executing a
    filter. For example, you can now pass Haml options when executing
    filters, like this: filter :haml, :format => :html5.

  • A more compact filesystem-based data source called
    filesystem_combined that doesn’t require tons of directories in the
    content and layout directories. Cleaner and less verbose.

  • An all-new dependency tracking system that ensures that all modified
    items and their dependent items are recompiled when the site is
    compiled. This speeds up site compilation by preventing non-modified
    pages from being recompiled.

  • A rules file which allows processing instructions (filtering pages,
    laying out pages) to be specified in a much more DRY way. In addition,
    the rules file is much more powerful than specifying processing
    instructions using item/layout attributes.

If you have questions, feel to drop by on the mailinglistlist or the
IRC channelirc. On IRC, I’m not always around, but when I am, I’ll
be happy to answer any questions you have.