Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News GitHub Pages Moves to Jekyll 3.0 to Improve Performance

GitHub Pages Moves to Jekyll 3.0 to Improve Performance

According to GitHub, Jekyll 3.0 will make GitHub Pages faster and easier to use, though the switch will not be painless for all existing sites due to some features being removed in the process.

Besides lots of performance improvements, Jekyll 3.0 adoption will also bring a couple of new features to GitHub Pages, such as:

  • incremental regeneration of pages through the (still experimental) --incremental switch, which promises to make builds even faster.
  • liquid profiler, enabled through a --profile switch to the build or serve commands. This will analyze a site’s build time and show where improvements are desirable.

Other changes that GitHub is enforcing to Pages will, though, shrink the options available to developers. First and foremost, GitHub Pages will exclusively support kramdown, Jekyll’s default engine, starting May 1st, 2016. This means that alternative engines, such as Rdiscount and RedCarpet will not be supported anymore. According to GitHub, Pages will provide the features of the two deprecated engine, so to make the transition painless. Yet, developers on Reddit complained that kramdown does not support all the features available from the other engines. In the process, alternative markup language Textile will also become unsupported from May 1st.

As a workaround to that, a few developers suggested on Reddit to generate locally the web site and then push it to GitHub by using a command like git subtree push --prefix build_folder origin gh-pages. An useful hint at this regard, is using two branches, one to host all sources, and another, master, for the rendered web site.

Another potentially breaking change concerns Pages syntax highlighter. Indeed, the only option available with the new GitHub Pages is Ruby-based Rouge, which rules out Python-based Pygments and other highlighter such as highlight.js.

Finally, Jekyll 3.0 does no support relative permalinks anymore, thus requiring that all paths be relative to the site’s root directory.

Rate this Article