Formatter plugin for go template files. The only peer dependency is prettier.
npm install --save-dev prettier prettier-plugin-go-template
Starting with Prettier 3 auto-discovery has been removed. Configuration is required β¬οΈ
// .prettierrc
{
"plugins": ["prettier-plugin-go-template"]
}
The following file types will be detected automatically:
.gohtml
, .gotmpl
, .go.tmpl
, .tmpl
, .tpl
, .html.tmpl
If you want to add support for .html
read the section on it below the examples.
Input | Output |
---|---|
{{ if or .Prev .Next -}}
{{ $p := where site.Pages }}
<div class="my-navigation">
{{ with $p.Next . -}}
<a href="{{ .RelPermalink }}">
<div class="row">
<div class="cell py-2">
{{ .Title }}
</div> </div> </a>
{{ end -}}
</div>
{{ end -}} |
{{ if or .Prev .Next -}}
{{ $p := where site.Pages }}
<div class="my-navigation">
{{ with $p.Next . -}}
<a href="{{ .RelPermalink }}">
<div class="row">
<div class="cell py-2">{{ .Title }}</div>
</div>
</a>
{{ end -}}
</div>
{{ end -}} |
To use it with GoHugo and basic .html
files, you'll have to override the used parser inside your .prettierrc
file:
{
"plugins": ["prettier-plugin-go-template"],
"overrides": [
{
"files": ["*.html"],
"options": {
"parser": "go-template",
},
},
],
}
Make sure to always have installed both dependencies:
prettier
prettier-plugin-go-template
Also make sure that they are installed inside the same scope.
Install both globally (npm i -g
) or locally β otherwise prettier may not pick up the plugin.
Note: The global setup additional requires setting your VSCode prettier path to your global prettier path. You can read in this issue how to set it up β should be doable in less than a minute if you have npm & VSCode already running.
// .prettierrc
{
/**
* Enables & disables spacing between go statements.
* E.g. {{ statement }} vs {{statement}}.
* Default: true
*/
"goTemplateBracketSpacing": true
}
<div>
<!-- prettier-ignore -->
{{if }}
{{end }}
</div>
<html>
{{/* prettier-ignore-start */}}
<script>
{{if }}
Whatever.
{{else }}
Psych.
{{end }}
</script>
{{/* prettier-ignore-end */}}
</html>
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!