How to Install and Build a Static Website with Jekyll

Daniel AyeniDaniel Ayeni
6 min read

The choice of technology can significantly impact a project's success in web development. One area that has recently regained popularity is static site generator technology.

The technology offers improved performance, security, and ease of maintenance. And Jekyll is a robust and user-friendly option among various static site generators.

This guide explores how to build a static website with Jekyll. It highlights its features and how it simplifies website development while maintaining flexibility and creativity.

Understanding Static Websites

Before delving deep into static website development with Jekyll, let’s briefly discuss static websites.

Static websites are websites characterized by simplicity and fixed content.

Unlike dynamic websites that generate content on the fly, static websites deliver the same pre-built content to all visitors.

They are typically crafted using HTML, CSS, and sometimes JavaScript.

The content on static sites remains unchanged until manually updated by the website owner or developer.

Differences between Static and Dynamic Websites

Static websites differ significantly from dynamic websites in functionality and complexity.

Dynamic websites use server-side technologies like PHP or JavaScript to generate real-time content tailored to each user's interactions.

In contrast, static websites display fixed content that doesn't change without manual updates.

Below is a table summarizing the difference between static and dynamic websites.

AspectStatic WebsitesDynamic Websites
Content GenerationContent remains fixed and rarely changes.Content is generated dynamically, often updated.
TechnologyBasic HTML, CSS, and JavaScript are used.Server-side technologies like PHP, ASP, or Node.js.
Database InteractionNo database integration or backend logic.Database integration for dynamic content delivery.
CustomizationLimited customization and interactivity.High interactivity and personalized experiences.
MaintenanceEasy to maintain as there are no frequent updates.Regular updates and maintenance are required.
Page Loading SpeedFast-loading since the content is pre-built.Slower, as content is generated on the fly.
ScalabilityScales well for small to medium websites.Scales well for large and complex applications.
ExamplesBrochure sites, personal blogs.E-commerce platforms and social media sites.

Getting Started with Jekyll: A Step-by-Step Guide for Windows Users

Here, you will learn how to get Jekyll working on your Windows machine.

First, ensure that your system meets the following requirements:

- It has Windows 10 or later.

- It has the Ruby programming language installed

- It has Node.js and npm (Node Package Manager) for additional functionalities.

- It has Git for version control (optional but recommended).

Follow these simple steps to install Jekyll on your Windows machine:

- install Ruby: Download the latest stable version of Ruby for Windows from the official Ruby website. Run the installer and check the "Add Ruby executables to your PATH" option during installation.

- Install Node.js and npm: Download the latest LTS version of Node.js from the official website and run the installer. The installation will include npm as well.

- Install Jekyll: Once Ruby and Node.js are installed successfully, open the Command Prompt and install Jekyll using the following command:

gem install Jekyll bundler

Jekyll is now successfully installed on your Windows machine.

Setting Up the Development Environment

First, create a new project with this command:

Jekyll new my-new-project.

Change the directory into the project folder with the following:

cd my-new-project

Start the new project for the first time with

Bundle exec Jekyll serve

Now, you can check the website at http://localhost:4000/

To stop the server, press Ctrl + C on your terminal.

You can restart the project again with the following**:**

Jekyll serve

Let me quickly familiarise you with the essential tools and technologies you will interact with:

- Jekyll: The static site generator that transforms plain text into static websites.

- Bundler: A gem that manages Jekyll's dependencies.

- Markdown: Jekyll supports Markdown for writing content.

- Liquid: The templating language used in Jekyll to build dynamic content.

- Git: Version control system to track changes and collaborate with others

Configuration and Folder Structure Overview

Here is Jekyll's folder structure and configuration, and you need to understand for effective development:

  • _config.yml: The main configuration file that contains site settings, plugins, and other essential information.

  • _layouts: This folder contains the templates to structure your website's pages.

  • _includes Reusable code snippets that can be included in your layouts and pages.

  • _posts: Store your blog posts in this folder with the filename format YYYY-MM-DD-title.md.

  • assets: Contains your CSS, JavaScript, and other static files.

  • index.md: The homepage of your Jekyll website.

Working with Markdown and Jekyll

Markdown is a lightweight markup language that allows you to format text quickly and easily.

It is widely used for writing content on the web due to its simplicity and compatibility.

Markdown uses plain text with special characters to indicate formatting elements.

Below is a table showing some markdown syntaxes:

Markdown SyntaxExampleOutput
Heading# Heading 1# Heading 1
Bold TextBold TextBold Text
Italic TextItalic TextItalic Text
Bold and Italic***Bold and Italic***Bold and Italic
Links[Link Text](https://example.com)Link Text
Images![Alt Text](image.jpg)

Integrating Markdown with Jekyll

1. Creating Markdown files for content

In Jekyll, content is typically written in Markdown files with a .markdown or .md extension. These files are easy to create and edit using any text editor.

Markdown allows you to structure your content with headings, lists, and other formatting options to make it more readable.

2. Front Matter and YAML configuration:

Jekyll allows you to add Front Matter, a YAML configuration section, at the beginning of your Markdown files.

It provides metadata about the content, such as title, author, date, and layout. Front Matter helps Jekyll process and render the content correctly.

3. Organizing content in directories:

To keep your project organised, you can create directories to group related Markdown files. Jekyll automatically recognizes the directory structure, and you can set up custom permalinks to control the URLs of your generated pages.

Utilizing Jekyll features with Markdown.

1. Layouts, includes, and templates

Jekyll uses layouts to maintain a consistent structure for your pages.

With layouts, you can wrap your Markdown content in HTML templates that define the header, footer, and other common elements.

Additionally, you can use reusing snippets of code across multiple pages.

2. Liquid tags and filters

Liquid is a templating language that Jekyll uses.

It allows you to embed dynamic content and logic into your Markdown files.

You can use Liquid tags to insert data from Front Matter or perform operations like loops and conditionals.

Filters enable you to modify content, such as formatting dates or converting text to lowercase.

3. Adding images, links, and other media

Markdown makes it simple to include images and links in your content.

To add an image, use an exclamation mark followed by the alt text and the image URL in brackets. Use square brackets for the link text and parentheses for the URL.

You can create and manage content efficiently using powerful features and customization options with Markdown and Jekyll.

Conclusion

Start now and explore the world of static websites with Jekyll, which empowers you to create stunning websites without stress.

Dive deeper into Jekyll's documentation to keep experimenting, learning, and expanding your skills.

Remember to reach out to Jekyll's vibrant community for continuous support.

0
Subscribe to my newsletter

Read articles from Daniel Ayeni directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Daniel Ayeni
Daniel Ayeni

I am Daniel Ayeni, also known as Danthesage. A full-stack developer versed in using modern technologies to develop user-friendly web and mobile applications that solve real-life problems.