Download the Latest Version of Hugo
- Visit https://github.com/gohugoio/hugo/releases/latest.
- Download the compatible version of Hugo for your operating system.
- Extract the downloaded archive and move the binary file into
/usr/local/bin
.
1. Create a Site
hugo new site sitename --format yaml
# replace sitename with name of your website
cd sitename
2. Installing PaperMod
INSTALL : Inside the folder of your Hugo site MyFreshWebsite, run:
git init #initialize git as well
git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
git submodule update --init --recursive # needed when you reclone your repo (submodules may not get cloned automatically)
3 Configuration
3.1 Let’s Configure hugo
to use PaperMod
The filename hugo.yaml
may vary based on the version, so make sure to rename it to hugo.yaml
if you find any other names. While this might not cause any errors, it will help avoid confusion."
echo "theme: ["PaperMod"]" >> hugo.yaml
3.2 Add Search Bar
In hugo.yaml
add:
outputs:
home:
- HTML
- RSS
- JSON
languages:
en:
languageName: "English"
weight: 1
menu:
main:
- name: Search
url: search/
weight: 8
- name: Tags
url: tags/
weight: 10
In contents/
add:
touch contents/search.md
echo "---
title: "Search" # in any language you want
layout: "search" # necessary for search
# url: "/archive"
# description: "Description for Search"
summary: "search"
placeholder: "Abrakadabra🪄"
---
" >> contents/search.md
3.2 Layout of Homepage
Go to this page, choose the layout, and make the changes as mentioned.
4. Let’s Test & Deploy
hugo server #i hope it turned out well :)
4.1 Create GitHub Repository
- Create a Repository without any templates or
LICENSE
in it. - Goto
Settings > Pages
- Change
Source
settings toGitHub Actions
4.2 Create a file named hugo.yaml
inside .github/workflows
mkdir -p .github/workflows
touch .github/workflows/hugo.yaml
4.3 Configure the GitHub Workflow
Note: Ensure that
HUGO_VERSION
in workflow matches the version used for building hugo site.
# Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Hugo site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches:
- main
# Allows you to run this workflow manually from the Actions tab
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-latest
env:
HUGO_VERSION: 0.147.2
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: Install Dart Sass
run: sudo snap install dart-sass
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Install Node.js dependencies
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Build with Hugo
env:
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
HUGO_ENVIRONMENT: production
TZ: America/Los_Angeles
run: |
hugo \
--gc \
--minify \
--baseURL "${{ steps.pages.outputs.base_url }}/"
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./public
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
5. Deploy Hugo!
hugo
git add -A
git commit -m "deploying hugo + first commit :D"
Copy the remote url from your repository (prefer copying ssh
key over https
key)
git remote add origin https://github.com/gohugoio/hugo.git
git push origin main
There you go!