For Code4Lib 2017, I created a poster looking at some tools for static website generation. Below is the poster text, with some added notes.
Static Website Generators: An Overview
A static website is made up of HTML, CSS, and JavaScript. It does not use any server-side language, and is delivered to the end user as it exists on the web server.
A static website generator is a tool that is used to create these websites.
These tools can be well suited for blogs, project overviews, documentation, conference sites, or collection highlights.
Some benefits of using static generators include:
- No back-end scripting or databases required
- Often more secure (compared to content management systems)
- Most are open-source
- Excellent performance
- Built-in servers for development
- Pre-built theme options
- Quick to create simple sites (once you know how to use the tool)
Some drawbacks of using static generators include:
- Lack of visual editing environment (but development is happening in this area)
- Some have a large number of dependencies
- Can be challenging to manage for larger sites
- Some have poor extensibility
- More difficult to install in Windows environments
A static website generator typically consists of…**
- A template language(s) for creating page templates
- A lightweight markup language (e.g. Markdown) for creating content
- A structure and markup (e.g. YAML) for providing configuration and metadata
- A set of rules or structure for organizing and naming files that are exported/compiled, files that are not, and how these files are handled
- A way to compile templates and markup into HTML (generally support for CSS or JavaScript preprocessors is also included)
- A built-in server for testing and development
(Some) static website generators
All information, including Github stars and forks, as of March 1st 2017
Jekyll
- Website: jekyllrb.com
- Developed in: Ruby
- License: MIT
- Github stars: 28828
- Github forks: 6419
- Templating engine: Liquid
- Highlights:
- Plugin support
- Large community
- Admin plugin (for content editing)
- Github pages integration
Hugo
- Website: gohugo.io
- Developed in: Go
- License: Apache 2.0
- Github stars: 15203
- Github forks: 2240
- Templating engine: Go templates
- Highlights:
- Fast build time
- No dependencies
- Multilingual built-in
- Easy install
Hexo
- Website: hexo.io
- Developed in: JavaScript
- License: MIT
- Github stars: 14901
- Github forks: 2285
- Templating engine: EJS, Swig
- Highlights:
- Plugin support
- Multilingual built-in
- Deployment options
- International community (can be a barrier for some themes and discussions in different languages)
Gitbook
- Website: gitbook.com
- Developed in: JavaScript
- License: Apache 2.0
- Github stars: 14404
- Github forks: 1795
- Templating engine: Jinja2
- Highlights:
- Gitbook hosting available
- Gitbook editor desktop application available
- Export to document formats (PDF, epub, mobi)
- Multilingual functionality built-in
Pelican
- Website: getpelican.com
- Developed in: Python
- License: AGPL
- Github stars: 6609
- Github forks: 1351
- Templating engine: Jinja2
- Highlights:
- Plugin support
- Multiple content import options
- Multiple markup formats for content creation
- Multilingual functionality built-in
Sources
- Christensen, M. B. (2015, Nov 16). “Static website generators reviewed: Jekyll, Middleman, Roots, Hugo”. Retrieved from www.smashingmagazine.com/2015/11/static-website-generators-jekyll-middleman-roots-hugo-review
- Netlify. “StaticGen: Top open-source static site generators”. Retrieved from www.staticgen.com
- Rinaldi, B. (2015). “Static site generators: Modern tools for static website development”. Sebastopol, CA: O’Reilly Media. Retrieved from www.oreilly.com/web-platform/free/static-site-generators.csp
- Rinaldi, B. (2016, Feb 6). “What Really Makes a Static Site Generator?”. Retrieved from css-tricks.com/really-makes-static-site-generator
This poster (below) was created using LucidPress. All logos retrieved from the sites of their respective tool.