Because balloons generate static...
Balloon is a very simple static site generator. Built for deploying to S3. It works for my needs, but it's pretty simple.
npm install -g balloon-generator
# generate static based on settings in balloon.json (see below)balloonballoon --output ./another/destination/ # override build directory# Same as above, except it watches for changes and serves the build directoryballoon --serveballoon --serve 3000 # with port# Get helpballoon --helpUsage: balloon [options]Options:-h, --help output usage information-V, --version output the version number-s, --serve [port] watch and serve files-b, --build <path> override build path
Here's what a base project looks like:
MyBalloonProject/├── balloon.json # Main config file (see below)├── content/ # Website pages live here (markdown and/or HTML)├── layouts/ # Layouts live here└── static/ # Everything in here remains untouched (use for images, css, etc)
Here is something a bit more complicated:
MyBalloonProject/├── balloon.json├── content/│ ├── index.html│ ├── rss.xml│ ├── blog/│ │ ├── index.html│ │ └── 2014/│ │ └── 12/│ │ ├── 04/│ │ │ ├── My First Post.md│ │ └── 08/│ │ └── My Second Post.md├── layouts/│ ├── rss.xml│ └── base.html└── static/├── favicon.ico├── styles/│ └── main.css└── scripts/└── main.js
A few notes on what you see above:
Balloon looks for a
balloon.json file in the directory that it is run from. Here is an example
of a config:
/** Directory to watch */"source": "./"/** Directory to put built files */"build": "build/"/** The domain (S3 bucket) to deploy to */"domain": "website.com"/*** Context attributs (values) in each of these will apply if* the regex pattern (key) matches the URL path of the page* being rendered.*/"defaults":".*":// The only required context variable"_layout": "default.html"// Some useful variables to be used in templates"siteName": "My Website""page_type": "basic""^/blog/.+":"_layout": "blog.html"// Change the type for blog posts so the template knows// what to do"page_type": "blog"
Balloon lets you define context variables in
balloon.json (see below), but it also provides some
default ones that should be useful. All Balloon-generated variables start with underscores.
_titlename of the file, without the extension
_slugfull URL path of the current page
_createdan extracted date if the URL path contains the pattern
_pagesa list of all the pages that were rendered, along with the context for each one
rss.xmlhave access to
/blog/index.htmlpage to list all blog posts