Back to the future with static site generators

Preview:

Citation preview

Dev Week 2016, London

With Static Site Generators

@chrischinch

[{

1998

Anyone Remember?

<frameset cols="50%,50%">

  <frame src=“page.html" />

  <frame src=“page2.html" />

</frameset>

[}

Not Alone (Or Just PHP)

❖ Wordpress: 647,518

❖ Joomla: 536,085

❖ Ruby on Rails: 330,059

[|

But… What is a Static Site Generator?

Content + Repeatable Elements → Static Website

Positives

❖ Collaboration & Workflow

❖ Super Fast

❖ Pre-build Irrelevant

❖ Flexible

❖ Minimal Infrastructure

Negatives

❖ Not Dynamic

❖ New

❖ Technical Knowledge

Why These Options?

❖ Stars / Downloads

❖ Community

❖ Simplicity

❖ Activity

❖ 1 per Language

Example Site

❖ Installation

❖ Configuration

❖ Creating Blog posts

❖ Creating Custom Event type

❖ Templates

❖ Extending

Jekyll / Octopress

❖ History❖ Ruby❖ Templates: Liquid❖ jekyllrb.com

gem install jekyll

jekyll new devweekjk

Middleman

❖ History❖ Ruby❖ Templates: ERB❖ middlemanapp.com

gem install middleman

middleman init devweekmi

Hugo❖ History❖ Go❖ Templates: Go Templates❖ gohugo.io

Pre-built binarieshugo new site devweekhg

Hexo❖ History❖ JavaScript❖ Templates: EJS / Swig❖ hexo.io

npm install hexo-cli -g

hexo init <folder>

npm install

Pelican❖ History❖ Python❖ Templates: Jinja2❖ getpelican.com

pip install pelican markdown

mkdir -p devweekpe

pelican-quickstart

Sculpin❖ History❖ PHP❖ Templates: Twig❖ sculpin.io

curl -O https://download.sculpin.io/sculpin.phar

chmod +x sculpin.phar

??

sculpin install

Assemble❖ History❖ node.js❖ Templates: Jade❖ assemble.io

mkdir devweekas

grunt-init assemble

npm install && bower install

Hakyll❖ History❖ Haskell❖ Templates: Pandoc❖ jaspervdj.be/hakyll

cabal install hakyll

wait………

hakyll-init devweekhk

Cryogen

❖ History❖ Clojure❖ Templates: Selmer❖ cryogenweb.org

lein new cryogen devweekcr

cd devweekcr

Luapress

❖ History❖ Lua❖ Templates: Mustache❖ luapress.org

luarocks install luapress

luapress init devweeklp

JBake❖ History❖ Java❖ Templates: Freemarker❖ jbake.org

brew install jbake

mkdir devweekjb

bake -i

Deployment

❖ FTP / SCP

❖ Rsync

❖ GitHub Pages / Hooks

❖ Language Build Systems / CIs

❖ Netlify, Surge etc…

Extending

❖ Jekyll: Generators, Converters, Commands, Tags, Hooks

❖ Middleman: New Features, Helpers, Manipulate Content, Hooks

❖ Hexo: Utilities available

❖ Pelican: Signals (Hooks)

Extending

❖ Sculpin: Symfony bundles

❖ Assemble: Plugins, Helpers

❖ Luapress: Basic docs

What’s Possible?

Thanks!

Chris Ward (aka Chinchilla)

Technical Writer & Developer Relationsgregariousmammal.com@chrischinch

staticgen.com

Recommended