Setting up GitHub Pages with Jekyll
Outside of using the automatic page generator provided by GitHub or writing your own .html files, there are several ways to set up your repository either for a User Page or Project Page with the initial set of files needed to create a website. Both of the following ways use jekyll
to create beautiful website written in Markdown (.md) files.
-
Use Jekyll directly.
-
Clone a repository which contains all the jekyll files needed to create a website such as the jekyll-bootstrap repository or Karl Broman’s simple_site repository.
Jekyll
To get started, I encourage you to follow the instructions on the GitHub Help: Using Jekyll with Pages website.
Installing Jekyll
The installation of Jekyll depends on Ruby and Bundler. To install Bundler, run the command
$ gem install bundler
To install Jekyll, run the command
$ gem install jekyll
Using Jekyll
The basic jekyll command to create a basic jekyll directory called myrepo
is jekyll new
:
$ jekyll new myrepo
$ cd myrepo
$ git init
If the repo is empty there will be no error messages. If the repo is not empty, it will complain about there being files already in the repo. Just move the files to a different places temporarily and rerun the command. A new set of files should appear in the directory. Copy all of the files you moved back into the repo and run this command in the myrepo
directory:
$ jekyll build
$ jekyll serve
To view the website locally, go to http://localhost:4000. Afterwards you can press ctrl-c to stop the process in the terminal. You can also add the --watch
command at the end to force Jekyll to rebuild the site every time you save the file.
$ jekyll serve --watch
Create and edit the Markdown files for your website, then commit your changes.
$ git add .
$ git commit -m "initial page commit"
This is a very basic website, but you can edit the Markdown files to personalize it. If this is repository is meant to be your User Page, you can use the master
branch to publish your website. If this is Project Page, change the name of the master
branch to gh-pages
and push to GitHub:
$ git branch -m master gh-pages
$ git remote add origin git@github.com:username/myrepo.git
$ git push -u origin gh-pages
Jekyll-Bootstrap
Jekyll-Bootstrap is similar to using jekyll
, but it takes away a lot of the hassle about Jekyll by allowing the user to create blog-aware websites using markdown with themes.
Getting started with Jekyll-Bootstrap
Here I will create a Project Page called myrepo
using Jekyll-Bootstrap. First, use git clone
to get a copy of the jekyll-bootstrap repository on Github and change the name of the directory from jekyll-bootstrap to your repository’s name (e.g. myrepo
). You must remove the .git directory because you don’t want the history of that repository as it will become your website. Finally, make the directory a new git repository with git init
.
$ git clone https://github.com/plusjade/jekyll-bootstrap
$ mv jekyll-bootstrap myrepo
$ cd myrepo
$ rm -rf .git
$ git init
To quickly view the website as it is locally as it is, run the command in the myrepo
directory
$ jekyll build
$ jekyll serve
To view the website locally, go to http://localhost:4000. Afterwards you can press ctrl-c to stop the process in the terminal.
Editing the _config.yml
file
When you open the index.md
file included in the Jekyll-Bootstrap download, it will tell you to edit the _config.yml
file to add in all of the information about your project. Open up the _config.yml
file and change this information:
title : Jekyll Bootstrap
tagline: Site Tagline
author :
name : Name Lastname
email : blah@email.test
github : username
twitter : username
feedburner : feedname
Also, you will want to change the production_url
to change the username
to your Github user name.
production_url : http://username.github.io/myrepo
BASE_PATH : http://username.github.io/myrepo
Add the following line into the _config.yml
file to tell GitHub how to interpret the markdown:
markdown: kramdown
Using MathJax with Jekyll
If you use $\LaTeX$, it’s easy to incorporate MathJax into the the .html file to be able to write $\LaTeX$ code. In the _includes/themes/twitter/default.html
, add the following lines of code from this gist.
Create new pages
New pages can be added using the rake
command. To keep the folder clean, make a new directory titled /pages
and place the .md files in it.
$ mkdir pages
$ rake page name="pages/contactme.md"
This will create a new markdown file named contactme
in a new directory called pages
. Put all the markdown files in the /pages
directory.
Edit and commit changes
Create and edit the Markdown files for your website, then commit your changes.
$ git add .
$ git commit -m "initial page commit"
If this is repository is meant to be your User Page, you can use the master
branch to publish your website. If this is Project Page, change the name of the master
branch to gh-pages
and push to GitHub:
$ git branch -m master gh-pages
$ git remote add origin git@github.com:username/myrepo.git
$ git push -u origin gh-pages
Jekyll-Bootstrap Themes
One of the best parts about using Jekyll-Bootstrap is the fact you can pick themes or create themes for your website!. To install a new theme, the general syntax is
$ cd myrepo
$ rake theme:install git="newtheme.git"
This will place all the necessary files for the theme in your repository . You can also switch between themes using $ rake theme:switch name="cooltheme"
.
The base themes for a page
and post
are found in _includes/themes/twitter/
. If are familiar with html and you want to make changes to the .html files, these are the files to edit.
Using Karl Broman’s simple_site repository
Karl Broman has also provided a GitHub repository called simple_site
(http://kbroman.github.io/simple_site/) which you can clone similar the repository from jekyll-bootstrap
. He has provided excellent documentation on creating both User Pages and Project Pages, so I refer you to his website for further details. Briefly, it works very similar to using the jekyll-bootstrap repository:
$ git clone git://github.com/kbroman/simple_site
$ cd simple_site
$ rm -rf .git
$ cd ../myrepo
$ cp -r ../simple_site/. .
$ git init
Create and edit the Markdown files for your website, then commit your changes.
$ git add .
$ git commit -m "initial page commit"
This is a very basic website, but you can edit the Markdown files to personalize it. If this is repository is meant to be your User Page, you can use the master
branch to publish your website. If this is Project Page, change the name of the master
branch to gh-pages
and push to GitHub:
$ git branch -m master gh-pages
$ git remote add origin git@github.com:username/myrepo.git
$ git push -u origin gh-pages
Next:
Create special Project Pages using --orphan gh-pages
branches. This keeps the code for your project in the master
branch, but all the files related to the website in an “orphan-ed” branch called gh-pages
because it has no history from that point.