Have been using octopress for a while now, but one thing i dont like is it’s reliance on ruby and time it takes to regenerate. Found that hugo is much better at these. Earlier site regeneration used to take ~5 minutes now happens in ~.2 seconds! Thus came the attraction of moving over- but as i found i am not the first to do so. I have read various posts and these are my steps to port it over:
The best part is no more rubydevkit and gem/bundler installs, what a big relief
setup
Since hugo is a different system as compared to octopress/jekyll- you can’t just drop replace it as it is. Hugo has a handy import command to translate markdown files:
hugo import jekyll <octopressblog-dir\source> <new-hugodir-temp>
once you have that create a new site in hugo (I found this is much easier than migrating earlier site) and copy your md
files to content\post\blog
directory.
hugo new site blogsite
D:\blog\hugo\blogsite>ls -l
total 1
drwxrwxrwx 1 user group 0 Nov 27 17:01 archetypes
-rw-rw-rw- 1 user group 107 Nov 27 17:01 config.toml
drwxrwxrwx 1 user group 0 Nov 27 17:01 content
drwxrwxrwx 1 user group 0 Nov 27 17:01 data
drwxrwxrwx 1 user group 0 Nov 27 17:01 layouts
drwxrwxrwx 1 user group 0 Nov 27 17:01 static
drwxrwxrwx 1 user group 0 Nov 27 17:01 themes
config.toml
file is your earlier _config.yaml
file. hugo does look for config.yaml
but i thought it is much better if i populate it fresh.
Here is some good information on how to configure hugo
Now one of the most important constraints i have is to make this site compabitle with what i already have with octopress.
Thus permalinks are going to be painful, which they were. I added these two lines in config.toml
.
canonifyurls = false
permalinks="/:year/:month/:day/:title/"
Once i had this things were working good, now comes the part about images/wp-content (quite a bit of baggage to carry from octopress and wordpress), both the directories goes to you blog-root directory. This is one of the images from really old post
Now that most of the stuff is located at proper place- now comes theme. Wanted something simple, responsive but useful- found a hugo port of beautiful-jekyll theme and tweaked it to my needs here. The good part is it has support for archives as well as top navigator on the page (so i can put my disclaimer page right up there :) )
generating site
generating site is pretty simple- ensure you have created a public
directory in your blog-root, run hugo
command without any params, assuming you have specified which theme to be used in config.toml
this will populate your site.
over to github
before pushing to github ensure that you have ignored public
directory from your sources, it’s un-neccessary stuff to track in your source.
// do this if you are not in blog-root
cd <blog-root>
git init
echo "public/" >> .gitignore
// now over to public, init git and add remote origin
cd public
git init
git remote add origin git@github.com:<github-username>/blog.git
git checkout -b master
// Switched to a new branch 'gh-pages'
git add --all
git commit -m "over to hugo"
git push -f origin master
This quickstart tutorial is pretty handy with details about generating site and pushing over to github. That’s all for now.