Spell Check, Build Your Site with Hugo, Publish to GitHub
So, you are happy with the preview provided by the local Hugo server, and you want to publish your
site. Make sure
git status doesn’t show anything uncommitted changes (you do keep versions of your project
under control, don’t you?). Then, manually or with some shell magic, change the
draft front matter
false for the pages you plan to publish. Restart your Hugo server without the
option and check that nothing is missing.
git diff should also be quite handy, especially after
scripted mass-changes. If everything looks good, commit again and proceed to
Your editor certainly has a spell-checker, and I’m sure you use it diligently, but checking before publishing is still a sane idea, since we, humans tend to forget and overlook things. This time, we want to spell-check everything we are about to publish en masse, and make sure it’s everything:
grep -rlP 'draft:\s+false' kontent/ | xargs -o -n1 aspell check --sug-mode=slow -x --mode=markdown
The above works if you are using BSD version of
xargs. For the GNU version (Linux) it looks
uglier, but can be factored out into a function:
grep -rlP 'draft:\s+false' kontent/ | xargs -o -n1 sh -c 'aspell check "$@" --sug-mode=slow -x --mode=markdown < /dev/tty' whatever
Commit when done.
That’s it. Your site is generated in
public directory of your project by default. Make sure you
put it into
.gitignore of your project, or, better still, configure it to be outside your project
tree altogether with
publishDir: <PATH> in your main configuration file.
There are plenty of other hosting options, but this one combines zero budget with full control over your code. The drawback is that you won’t have an access to HTTP headers (at least as of this writing), and so caching for all content will be set rigidly to 10 minutes.
Create an account at GitHub , if you don’t have any yet. It’s free, and they won’t spam you.
Create a repository named
<YOUR USER NAME>.github.io. Go to settings, and enable GitHub Pages for
In your project’s publishing directory, initialize a new Git repository, add the files, and commit.
Set the remote to be your
<YOUR USER NAME>.github.io, and push to it. Your site will be available
http://<YOUR USER NAME>.github.io.
Should this URL not satisfy your ego, you can use your own domain. There is an excellent GitHub tutorial , so I’m not going into details here.