@htnabe/prettier-plugin-hugo-post
v0.0.2
Published
A Prettier plugin for formatting Hugo content files with YAML, TOML, or JSON front matter, Markdown content, and Go template syntax.
Maintainers
Readme
@htnabe/prettier-plugin-hugo-post
A Prettier plugin for formatting Hugo content files that mix front matter, Markdown, and Go template syntax.
This package started as a fork of prettier-plugin-hugo-post.
Why this plugin?
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.
Features
- 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
Installation
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-templateBasic configuration
Add 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"
}
}
]
}Usage
Format a single file:
bunx prettier --write content/posts/my-post.mdCheck formatting without writing:
bunx prettier --check "content/**/*.md"Example
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 }}Project scripts
The repository uses these package scripts:
bun test
bun run lint
bun run lint:fix
bun run format
bun run format:check
bun run exampleContributing
Contributions are welcome. Please read the contributing guide before opening a PR.
License
MIT
Acknowledgments
- 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.
