Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

131 lines (91 sloc) 3.257 kb

static

Static is a simple static site generator written in Clojure. For a sample site build using static see http://nakkaya.com

Features

Static can parse org-mode and markdown files.

Dependencies

Static requires the leiningen build tool. Once installed, you can build Static with the following commands from within the project directory structure:

$ lein deps
$ lein uberjar

Usage

Creating a static site usually involves the following,

  • Set up the basic structure of the site
  • Create some posts
  • Run your site locally to see how it looks
  • Deploy your site

A basic static site usually looks something like this:

.
|-- config.clj
`-- resources
    |-- posts
    |   |-- 2009-04-17-back-up-and-restore-a-mysql-database.markdown
    |   |-- 2010-02-10-a-simple-clojure-irc-client.markdown
    |   `-- 2010-08-02-using-clojure-contrib-generic-interfaces.markdown
    |-- public
    |   `-- 404.html
    |-- site
    |   `-- index.markdown
    `-- templates
        `-- default.clj

An overview of what each of these does:

config.clj

Contains a vector of configuration options.

  • :site-title - Title of the site.
  • :site-description - Description of the site.
  • :site-url - URL of the site.
  • :author-name - Name of the author.
  • :author-email - E-mail address of the author.
  • :copyright-year - Year the pages were created/copyrighted.
  • :in-dir - Directory containing site content by default resources/
  • :out-dir - Directory to save compiled files.
  • :default-template - Default template to use.
  • :encoding - Encoding to use for read write operations.
  • :posts-per-page - Number of posts in latest post pages.
  • :blog-as-index - If true use blog as index.
  • :emacs - path to emacs if you want to render .org files.
  • :emacs-eval - elisp code to be evaluated on the emacs process.
  • :host - remote host to deploy to.
  • :user - remote username
  • :deploy-dir - Remote directory to deploy to.
  • :rsync - path to rsync if you want to deploy with rsync.

The variables can later be reused (for example in your default template) as:

	(:author-name (static.config/config))

posts/

Folder containing posts, the format of these files are important, as named as YEAR-MONTH-DATE-title.MARKDOWN.

public/

Folder containing static data such as images, css, javascript etc. Folder structure will be mirrored exactly.

site/

Folder containing pages that are not posts.

templates/

Folder containing templates that are used to render posts and pages with.

Installation

You need to place the uberjar lein created to the folder containing config.clj.

Building the site

java -jar static-app.jar -b

Testing the site

You can test the site locally using jetty, which will launch on http://localhost:8080.

java -jar static-app.jar -j

Deploying the site

RSYNC

$ java -jar static-app.jar --rsync

License

Copyright (C) 2010, 2011

Distributed under the Eclipse Public License, the same as Clojure.

Jump to Line
Something went wrong with that request. Please try again.