Using Husky to Build Hugo Site
by Aaron Crowder on in Site Updates
I’ve been making some efforts to streamline the publishing process for this site. I’ve read about tools like Netlify and Lektor, but I wanted to keep things as close to a basic Hugo site as possible.
To that end, I wanted to use git hooks to run hugo whenever I ran git commit
.
That way to publish a new post I simply had to write it in markdown, save,
commit and push. No remembering to run hugo. No remembering to add changes to
the site. A plain and simple git workflow for publishing.
I have seen husky before and decided to give that a go for this project.
It’s an npm package that allows you to define your git hooks in your
package.json
, which will make it easy for me to maintain the hooks I want to
use.
To get started I first had to initialize my package.json
file:
npm init
Then I installed husky:
npm install husky@next --save-dev
And finally update my package.json
with the following scripts and husky
config:
"scripts": {
"build": "hugo",
"dev": "hugo server"
},
"husky": {
"hooks": {
"pre-commit": "npm run build && git add docs/*"
}
}
Now I can use npm to run the hugo server (not that that’s easier than hugo server
) and build the site. The real value though is that any time I commit
the build will automatically run and the resulting build will be added before
the commit.