A Prettier plugin for formatting Hugo content files that mix front matter, Markdown, and Go template syntax.
Hugo content files are not plain Markdown. They often contain:
- YAML, TOML, or JSON front matter
- Markdown prose and lists
- Hugo shortcodes
- Go template expressions and pipelines
This plugin keeps those pieces formatted consistently while leaving the rest of your Prettier setup alone.
- Front matter formatting for YAML, TOML, and JSON
- Markdown formatting via Prettier
- Hugo shortcode spacing and normalization
- Template expression formatting for
.Title, pipelines, conditions, and range blocks - Works with standard Prettier overrides
Using Bun:
bun add -d prettier @htnabe/prettier-plugin-hugo-postUsing npm:
npm install --save-dev prettier @htnabe/prettier-plugin-hugo-postIf you also format Hugo layout templates, install the companion plugin:
bun add -d @htnabe/prettier-plugin-go-templateAdd the plugin to Prettier and set the parser for Hugo content files:
{
"plugins": ["@htnabe/prettier-plugin-hugo-post"],
"overrides": [
{
"files": ["content/**/*.md", "**/*.md", "**/*.hugo"],
"options": {
"parser": "hugo-post"
}
}
]
}For a mixed Hugo project, combine it with @htnabe/prettier-plugin-go-template:
{
"plugins": ["@htnabe/prettier-plugin-hugo-post", "@htnabe/prettier-plugin-go-template"],
"overrides": [
{
"files": ["content/**/*.md", "**/*.md"],
"options": {
"parser": "hugo-post"
}
},
{
"files": ["layouts/**/*.html", "**/*.html"],
"options": {
"parser": "go-template"
}
}
]
}Format a single file:
bunx prettier --write content/posts/my-post.mdCheck formatting without writing:
bunx prettier --check "content/**/*.md"This input:
---
title: "My Post"
tags: [ "hugo", "blog" ]
---
{{<figure src="/img.jpg"alt="Test">}}
{{ .Title|upper }}is normalized to:
---
title: "My Post"
tags: ["hugo", "blog"]
---
{{< figure src="/img.jpg" alt="Test" >}}
{{ .Title | upper }}The repository uses these package scripts:
bun test
bun run lint
bun run lint:fix
bun run format
bun run format:check
bun run exampleContributions are welcome. Please read the contributing guide before opening a PR.
MIT
- Prettier for the excellent formatting engine
- @htnabe/prettier-plugin-go-template for inspiration on Go template formatting
- Hugo for the amazing static site generator
Made with ❤️ for the Hugo community.