bonsai
Bonsai is a static web site generator, it uses the best tools available for site construction and adheres to best web practices.
What it does
- Provides a tiny HTML5, liquid driven template set.
- Implies a simple structure to get started faster.
- An inbuilt server for development. No setup required.
- Tasks to export the site to
output
. Upload the contents ofoutput
. Job done. - Access to page hierarchy through
children
,siblings
,ancestors
andnavigation
. - Generates
sitemap.xml
ready for search engines to spider your site. - Generates
robots.txt
to be friendly to search engines.
Getting started
-
Install bonsai
gem install bonsai
-
Run the generator
bonsai --plant [NAME]
Type bonsai --help
for any help with commands
Presentation
Development server
Unlike other static generators, bonsai provides you with a built in web server. Once you've generated the necessary files (generator included) you can simply start developing. Type bonsai --cultivate
in the root of the generated site, a web server (rack, with thin) will start up.
It will also watch for when you save files - taking care of processing your sass files - kind of like autotest.
Production server
This is the cool part. Drop a bonsai generated site under pretty much anything. Apache, Nginx, Lighttpd - I don't care.
The generator will provide you with a .htaccess file that will turn on gzip/deflate compression for static assets as well as set long standing http caching timestamps and etags.
Deployment
- Run
bonsai --repot
- Upload the contents of
site-root/output
to your production server- For example:
rsync -ave ssh ./output/ tinytree.info:/var/www/tinytree.info
- For example:
Ruby implementations
Bonsai runs under a number of Ruby implementations, MRI (1.8.7, 1.9.1, 1.9.2, 1.9.3), RBX (1.8 mode), JRuby (1.8 mode, 1.9 mode). Check travis to see the specifics.
Have you used this for a real job?
Yes. I built (and content filled) a web site with around 160 pages in 5 days.
When I found something that didn't quite work, was too slow or perhaps not even possible I wrote a spec and implemented it later. Better software from real requirements. (I used every feature I implemented)
Links
Thanks
- Anthony Kolber for writing, then rewriting Stacey from scratch. We spent many hours talking about best practice and software UX.
- Lincoln Stoll for reminding me to use the tools that I know best
Credits
- Rohit Arondekar
- Justin Ridgewell
- Ralph von der Heyden
- David Goodlad
- Philip Harrison
Note on Patches/Pull Requests
- Fork the project.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don't break it in a future version unintentionally.
- Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
- Send me a pull request. Bonus points for topic branches.
Copyright
Copyright (c) 2010 Ben Schwarz. See LICENSE for details.