blowfish/node_modules/prettier-plugin-go-template
2023-01-29 22:30:24 +00:00
..
lib config redirect 2023-01-29 22:30:24 +00:00
LICENSE config redirect 2023-01-29 22:30:24 +00:00
package.json config redirect 2023-01-29 22:30:24 +00:00
README.md config redirect 2023-01-29 22:30:24 +00:00

prettier-plugin-go-template

NPM Badge CodeCov Badge Contributions Badge

Formatter plugin for go template files. The only peer dependency is prettier. Test you own code on the playground.

npm install --save-dev prettier prettier-plugin-go-template

The following file types are detected automatically: .gohtml, .gotmpl, .go.tmpl, .tmpl, .tpl, .html.tmpl

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 -}}

GoHugo / .html

To use it with GoHugo and basic .html files, you'll have to override the used parser inside your .prettierrc file:

{
  overrides: [
    {
      files: ["*.html"],
      options: {
        parser: "go-template",
      },
    },
  ],
}

VSCode

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.

Additional Options

// .prettierrc
{
  /**
   * Enables & disables spacing between go statements.
   * E.g. {{ statement }} vs {{statement}}.
   * Default: true
   */
  "goTemplateBracketSpacing": true
}

Ignoring Code

Single Block

<div>
  <!-- prettier-ignore -->
  {{if }}
  {{end }}
</div>

Multiline

<html>
  {{/* prettier-ignore-start */}}
  <script>
    {{if }}
    Whatever.
    {{else }}
    Psych.
    {{end }}
  </script>
  {{/* prettier-ignore-end */}}
</html>

Changelog

v0.0.12

  • Fix several formatting issues
  • Improve unformattable script & style detection
  • Huge thanks to @jasikpark for validating & cleaning up the issues 🎉

v0.0.11

  • AST rewrite
  • Fix inline actions
  • If / Else / Else-If support
  • Ignore formatting for blocks with `{{/* prettier-ignore */}}
  • Ignore large code sections with `{{/* prettier-ignore-start /}}...{{/ prettier-ignore-end */}}
  • Tweak general formatting
  • Support for multiline actions

v0.0.10

  • Resolve bug #19: Fix template comments.

v0.0.9

  • Resolve bug of single line if statements.

v0.0.8

  • Go block statements will now be indented accordingly. Except for else.
    • if, range, block, with, define, end

v0.0.7

  • Fix broken shortcodes. Thanks to @alqu for discovering & fixing the bug.

Contributors

Thanks goes to these wonderful people (emoji key):


alqu

🐛 ⚠️ 💻

Gabriel Monteagudo

🐛

Bryan

🐛

Andreas Richter

🐛

Noah Brenner

💻 📖

silverwind

🤔

Charles Pence

🐛

Caleb Jasik

🐛 📖 💡 🤔 🚧 💬

Dan Gold

🐛

This project follows the all-contributors specification. Contributions of any kind welcome!