Using Jekyll on Windows
Static Gen background links:
- lists: StaticGen directory or Static Site Generators
- “Why Static Website Generators Are The Next Big Thing” Smashing magazine
- Jekyll documentation, intro
Install on Windows 7
Jekyll does not officially support Windows, however it is cross platform (they just don’t officially write windows documentation or check for bugs). There is a Jekyll on Windows page, but it is out of date. Not everything mentioned is required any more.
For more complete install info, and other platforms see go-go gh-pages.
Here are the steps I took to get it running on Windows 7 or 10:
- Get Ruby installed:
- Download the suggested stable version of RubyInstaller (Ruby 2.4.X (x64)+).
- Run RubyInstaller, all the defaults should be fine. On the final step, ensure the box to start the MSYS2 DevKit is checked.
- The installer will open a terminal window with options to install MSYS2 DevKit components. Choose option 3, “MSYS2 and MINGW development toolchain”, or simply press ENTER to install all the necessary dependencies. (This installer can be restarted by typing
ridk install
into a command prompt)
- Install Jekyll:
- Open a command prompt, then type
gem install jekyll bundler
(gem is Ruby’s installer, similar to Python’s pip) - Done!
- Open a command prompt, then type
- Use Jekyll:
- To create a new demo project, open a command prompt, type
jekyll new testsite
. Jekyll will create a new directory with the given name that includes all the files necessary for a basic project. Once you understand the basics, this step is unnecessary. - Move to the new directory, type
cd testsite
- To start working with it, type
jekyll serve
. (note: for larger sites you will want to activate incremental build, use the short commandjekyll s -i
) - Open web browser and visit http://localhost:4000
- To stop the server, type
Ctrl+C
in the command prompt. - While
jekyll serve
is active, Jekyll watches the project directory and builds a static html site in the directory_site
which it serves locally. - Jekyll watches for any changes you made to the project files and rebuilds the
_site
as necessary. - Don’t make changes to the
_site
directory. It is generated by Jekyll from all the other files. - Jekyll bundles together a bunch of other helpful development tools, such as SASS for CSS and Liquid for templating pages.
- When you are done developing, the contents of the
_site
directory will be copied to your host location (for example testweb or github). - Use a good text editor, since files should be UTF-8, and there can be issues with line endings. I use Visual Studio Code which is handy for navigating the directory structure.
- To create a new demo project, open a command prompt, type
A tour of the project directory
testsite
(the top level contains pages that will become top level pages. Edit the overall site settings in_config.yml
. Changes to_config.yml
are not automatically refreshed duringjekyll serve
, you have to stop the server and restart.)_includes
These are modular chunks of your pages which can be called into a page layout by Liquid. For example{% include head.html %}{% end raw %}
in a page layout would add the includehead.html
from the_includes
directory._layouts
These are basic templates for complete web pages. They are constructed out of includes. The layouts are called by files that have content to add the template structure._posts
This directory contains blog posts. We are more likely to use a_collections
directory for similar automated treatment of standardized content pages._sass
This contains the modular.scss
files that will be pulled into your main css for the site. All normal CSS is valid SCSS, but Sass adds many helpful functions and programatic features which are compiled into regular CSS automatically._site
This is the built out version of your new static site.css
Contains the base SCSS file that will be compiled into a single CSS file for the site. You can set all your Sass varibles in one place (if you are using them) and call in your scss partials from_sass
by using@import "base";
- You can add other directories as needed for site assets such as
images
. They will be copied directly to the_site
directory.
Example Themes with demos
On gh-pages
Contrary to popular belief, GitHub Pages does allow/support a few plugins. Here is the list: https://pages.github.com/versions/
Add them to your _config.yml
, under gems:
, not in the the gemfile (since gh-pages ignores that).
They can be installed as a bundle using the github-pages
gem.
Of interest are: