Please take a moment and donate to nanoc. A lot of time has gone into developing nanoc, and I would like to keep the current pace. Your support will ensure that nanoc will continue to improve.
nanoc is a simple but very flexible static site generator written in Ruby. It operates on local files, and therefore does not run on the server. nanoc “compiles” the local source files into HTML (usually), by evaluating eRuby, Markdown, etc.
Note: This documentation looks best with Yardoc, not RDoc.
The nanoc web site contains a few useful resources to help you get started with nanoc. If you need further assistance, the following places will help you out:
nanoc uses Semantic Versioning.
Source Code Documentation
The source code is located in
lib/nanoc and is structured in a few
basecontains the bare essentials necessary for nanoc to function
source_datacontains raw, uncompiled content that will be compiled
result_datacontains the compiled content
compilationcontains the compilation functionality
clicontains the commandline interface
data_sourcescontains the standard data sources ( subclasses), such as the filesystem data source
extracontains stuff that is not needed by nanoc itself, but which may be used by helpers, data sources, filters or VCSes.
filterscontains the standard filters ( subclasses) such as ERB, Markdown, Haml, …
helperscontains helpers, which provide functionality some sites may find useful, such as the blogging and tagging helpers
taskscontains rake tasks that perform a variety of functions such as validating HTML and CSS, uploading compiled files, …
The namespaces (modules) are organised like this:
lib/nanoc/baseare part of this module (not
is the namespace for everything nanoc-related (obviously). The
- containing everything related to the commandline tool.
- contains the data sources
- contains the helpers
- contains useful stuff not needed by nanoc itself
- contains the (textual) filters
The central class in nanoc is, so you should start there if you want to explore nanoc from a technical perspective.
nanoc has few dependencies. It is possible to use nanoc programmatically without any dependencies at all, but if you want to use nanoc in a proper way, you’ll likely need some dependencies:
- The commandline frontend depends on
- The autocompiler depends on
- Filters and helpers likely have dependencies on their own too.
If you’re developing for nanoc, such as writing custom filters or helpers, you may be interested in the development dependencies:
- For documentation generation you’ll need
- For packaging you’ll need
rubygems(1.3 or newer).
- For testing you’ll need
(In alphabetical order)
- Ben Armston
- Colin Barrett
- Bil Bas
- Dmitry Bilunov
- Fabian Buch
- Devon Luke Buchanan
- Stefan Bühler
- Dan Callahan
- Brian Candler
- Jack Chu
- Michal Cichra
- Zaiste de Grengolada
- Vincent Driessen
- Chris Eppstein
- Jeff Forcier
- Riley Goodside
- Felix Hanley
- Justin Hileman
- Starr Horne
- Daniel Hofstetter
- Tuomas Kareinen
- Greg Karékinian
- Matt Keveney
- Kevin Lynagh
- Go Maeda
- Nikhil Marathe
- Daniel Mendler
- Stuart Montgomery
- Ale Muñoz
- John Nishinaga
- Gregory Pakosz
- Nicky Peeters
- Christian Plessl
- Damien Pollet
- Šime Ramov
- Xavier Shay
- Arnau Siches
- Eric Sunshine
- Dennis Sutch
- Takashi Uchibe
- Matthias Vallentin
- Ruben Verborgh
- Scott Vokes
- Toon Willems
You can reach me at firstname.lastname@example.org.