Goodbye Jekyll, Hello Hugo
If you’ve been paying attention to this site, you would have noticed that the blog has been going through some updates for a while. Hopefully those are taken care of for the moment, but the biggest thing thats changed is the platform running the site. This started out as a self-hosted Ghost site, then a GhostPro site, and then a site running on GitHub Pages via Jekyll. However, due to the requirements of site previews and building Jekyll locally, it’s caused updates to be more difficult than they should be.
I’ve worked with Jekyll generated sites that on a 2015 MBP 15", would take a minute to rebuild and update changes. While that time isn’t ideal, when that was transferred to a Windows laptop running WSL to enable the user to build a new page in Jekyll, a simple save to change a single character would take nearly 4 minutes. Granted, there was a difference in the machines, but any time you have to wait that long to see a simple change made to a page, it’s not ideal.
Since the last post, I’ve been looking at various options to replace Jekyll with something like Gatsby or Nuxt.js or similar. However, as there really isn’t any dynamic data on the site, it never made sense to me to include the complexity of React or Vue to be able to render a blog site. Recently, I ran across Hugo, and everything started to make sense when investigating it further. On the first install and build of my Jekyll site on Hugo, the build completed in less than a second. That alone was enough to catch my attention. Previously while working with Jekyll, I would have to wait for the build to complete, and then go to the browser and refresh to hope my changes were correct. Hugo integrates the LiveReload plugin while you are building things locally, so that a change to a file and a save will end up regenerating the site and updating the browser quicker than I’m able to switch windows to the browser.
In addition, it seems that Hugo has much more capability baked into the system so that each individual theme doesn’t have to recreate the wheel. Enabling Google Analytics was as simple as putting the Analytics ID in place. Turning on Open Graph, and all the other Schema data to support rich content for Twitter, Facebook, and Google was extremely simple as well.