Skip to content

Instantly share code, notes, and snippets.

Last active Jan 29, 2022
What would you like to do?
zsh functions for hugo static site generator

I use a Mac with hugo, and have some zsh functions in my .zshrc file, to make my life easier.

I have a bunch of functions for running hugo server with different ports to keep the sites out of each other's hair. Then I have some functions for generating the sites and pushing to production.

Once you have the functions written up, you can just execute hugoserver-1 to start the local server on port 1377, in the case below, and ctrl-c to stop it. And hugodeploy-1 to generate and push to your web server via rsync.

The sample below is to make it easy to understand the gist (get it?). The ugly truth is here:

function hugoserver-1 {
cd ~/path/to/1
hugo server --buildDrafts --watch --verbose --source="/path/to/1" --config="/path/to/1/config.toml" --port=1377
function hugodeploy-1 {
cd /path/to/1
rm -rf /tmp/
chmod -R 755 /path/to/1/static/
echo "GENERATING..."
hugo --config="/path/to/1/config.toml" --baseURL="" -s /path/to/1/ -d /tmp/
echo "SYNCING..."
/path/to/rsync -avz --delete --iconv=UTF-8-MAC,UTF-8 --exclude '.well-known' /tmp/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment