Migrate from Jekyll to Hugo

Hugo is a lot easier to work with locally (especially on Windows), and
because it's not natively supported by GitHub Pages, it gets deployed
using GitHub Actions, so it's also easier to keep the version of Hugo in
sync between local builds and deployments.

I've compared the generated _site/ and public/ folders and they look
equivalent, except that Hugo also generates a sitemap: that can be
disabled, but it's good to have.
This commit is contained in:
Oliver Hamlet
2026-01-11 17:48:57 +00:00
parent 83ff7a7f9d
commit c1194ac2ec
60 changed files with 244 additions and 125 deletions
+77
View File
@@ -0,0 +1,77 @@
name: Continuous Deployment
on:
push:
branches:
- master
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
# Default to bash
defaults:
run:
shell: bash
jobs:
# Build job
build:
runs-on: ubuntu-24.04
env:
HUGO_VERSION: 0.154.4
steps:
- name: Install Hugo CLI
run: |
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
fetch-depth: 0
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build with Hugo
env:
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
HUGO_ENVIRONMENT: production
run: |
hugo \
--minify \
--baseURL "${{ steps.pages.outputs.base_url }}/"
- name: Upload artifact
uses: actions/upload-pages-artifact@v4
with:
path: ./public
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-24.04
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
+5
View File
@@ -1,3 +1,8 @@
# Jekyll-generated files
_site/
.sass-cache/
Gemfile.lock
# Hugo-generated files
/public/
/.hugo_build.lock
-2
View File
@@ -1,2 +0,0 @@
source 'https://rubygems.org'
gem 'github-pages'
+7 -13
View File
@@ -3,20 +3,14 @@ loot.github.io
This repository acts as the main LOOT team repository, and holds all the issues that aren't specific to the code or any one game. In addition to that, it also holds LOOT's static website.
The static website is a [Jekyll](https://jekyllrb.com/) site that uses [Material Design Lite](https://www.getmdl.io/) components and the [js-yaml](https://github.com/nodeca/js-yaml), [Octokit.js](https://github.com/octokit/rest.js) and [j-toml](https://github.com/LongTengDao/j-toml) libraries, which are provided by Google, Cloudflare and Skypack CDNs.
The static website uses [Material Design Lite](https://www.getmdl.io/) components and the [js-yaml](https://github.com/nodeca/js-yaml), [Octokit.js](https://github.com/octokit/rest.js) and [j-toml](https://github.com/LongTengDao/j-toml) libraries, which are provided by Cloudflare and Skypack CDNs.
The easiest way to build this site locally is using Docker:
The website is generated using [Hugo](https://gohugo.io). The easiest way to build it is to:
```
docker run --rm -v ${PWD}:/srv/jekyll -v jekyll_bundle:/usr/local/bundle -p 4000:4000 -it jekyll/jekyll:3.8.6 jekyll serve --no-watch
```
1. Download a [prebuilt Hugo binary](https://github.com/gohugoio/hugo/releases/latest).
2. Add the binary to your `PATH`.
3. Run `hugo` from the root of this repository.
The site will then be accessible at <http://localhost:4000>.
Hugo will create the generated site in the `public` folder.
To update the `github-pages` Ruby gem, run:
```
docker run --rm -v ${PWD}:/srv/jekyll -v jekyll_bundle:/usr/local/bundle jekyll/jekyll:3.8.6 bundle update github-pages
```
The version used by GitHub is given [here](https://pages.github.com/versions/).
To view the site locally, run `hugo server`, the site will then be accessible at <http://localhost:1313>.
-13
View File
@@ -1,13 +0,0 @@
# GitHub sets these, but setting them here so local development environments
# replicate GitHub's behaviour properly.
safe: true
lsi: false
# Enable page redirection
plugins:
- jekyll-redirect-from
whitelist:
- jekyll-redirect-from
include: [".well-known"]
-8
View File
@@ -1,8 +0,0 @@
<ul>
<li><a href="/docs/contributing/How-To-Contribute.html">How To Contribute</a></li>
<li><a href="/docs/contributing/Masterlist-Editing.html">Masterlist Editing</a></li>
<li><a href="/docs/contributing/Regular-Expression-Regex.html">Regular Expression - Regex</a></li>
<li><a href="/docs/contributing/Quickly-Testing-Your-Masterlist-Changes.html">Quickly Testing Your Masterlist Changes</a></li>
<li><a href="/docs/contributing/Masterlist-Versioning.html">Masterlist Versioning</a></li>
<li><a href="/docs/contributing/Resolving-Conflicts.html">Resolving Conflicts</a></li>
</ul>
-8
View File
@@ -1,8 +0,0 @@
<ul>
<li><a href="/docs/help/LOOT-FAQs.html">FAQs</a></li>
<li><a href="/docs/help/How-To-Report-Issues-Helpfully.html">How To Report Issues Helpfully</a></li>
<li><a href="/docs/help/Introduction-To-Load-Orders.html">Introduction To Load Orders</a></li>
<li><a href="/docs/help/Dirty-Edits,-Mod-Cleaning-&amp;-CRCs.html">Dirty Edits, Mod Cleaning &amp; CRCs</a></li>
<li><a href="/docs/help/Setting-Windows'-File-Permissions.html">Setting Windows' File Permissions</a></li>
<li><a href="/docs/help/Changing-Plugin-Types-In-Starfield.html">Changing plugin types in Starfield</a></li>
</ul>
-6
View File
@@ -1,6 +0,0 @@
<ul>
<li><a href="/docs/team/Team-Member-Responsibilities.html">Team Member Responsibilities</a></li>
<li><a href="/docs/team/Making-A-Release.html">Making A Release</a></li>
<li><a href="/docs/team/Team-Policies.html">Team Policies</a></li>
</ul>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

+1 -1
View File
@@ -1,5 +1,5 @@
---
layout: page
layout: home
title: The Load Order Optimisation Tool
---
@@ -1,7 +1,6 @@
---
layout: page
title: LOOT Settings File Converter
permalink: /convert-settings/
---
<p>Convert your <code>settings.yaml</code> (used by LOOT v0.11.0 and earlier) to a <code>settings.toml</code> (used by LOOT v0.12.0 and later). Your <code>settings.yaml</code> can be found in <code>%LOCALAPPDATA%\LOOT\</code>, which LOOT's "Open Debug Log Location" menu option opens, and the <code>settings.toml</code> goes in the same directory.</p>
@@ -18,4 +17,4 @@ permalink: /convert-settings/
<p>Note that the download link that appears above after converting YAML does not work in Internet Explorer or Edge. Users of those browsers will need to copy the content of the TOML text box into a <code>settings.toml</code> file they create themselves, or use a different browser</code>.</p>
<script src="/js/convert.js" type="module"></script>
<script src="convert.js" type="module"></script>
+1 -2
View File
@@ -1,7 +1,6 @@
---
layout: page
title: Credits
permalink: /credits/
---
<p>LOOT relies on the submission of information by users to improve. We can't list everyone who has posted in LOOT's forum threads, but the people who have contributed on GitHub are listed below.
@@ -9,4 +8,4 @@ permalink: /credits/
<div id="progress" class="mdl-spinner mdl-js-spinner mdl-spinner--single-color is-active"></div>
</div>
<script src="/js/credits.js" type="module"></script>
<script src="credits.js" type="module"></script>
+10
View File
@@ -0,0 +1,10 @@
---
layout: page
title: Discord Server
params:
redirect_to: https://discord.gg/SZVPRzf
---
<p>The official LOOT Discord server can be found at:
<a href="{{% param "redirect_to" %}}">{{% param "redirect_to" %}}</a>
</p>
+1 -11
View File
@@ -1,7 +1,6 @@
---
layout: page
layout: section
title: Documentation
permalink: /docs/
---
<h3>LOOT, libloot and Metadata Syntax</h3>
@@ -12,12 +11,3 @@ permalink: /docs/
<li><a href="https://loot.readthedocs.io/en/stable/">LOOT</a></li>
<li><a href="https://loot-api.readthedocs.io/en/stable/">libloot and metadata syntax</a></li>
</ul>
<h3>Help</h3>
{% include help_index.html %}
<h3>Contributing</h3>
{% include contributing_index.html %}
<h3>Team</h3>
{% include team_index.html %}
@@ -1,6 +1,9 @@
---
layout: page
title: How To Contribute
weight: 1
aliases:
- How-To-Contribute.html
---
<p>This page will guide anyone wishing to contribute to LOOT directly through the process of getting set up and making their first contribution. You don't need to be a project member to join in!</p>

Some files were not shown because too many files have changed in this diff Show More