Search code examples
markdownhandlebars.jssemantic-release

Remove linebreaks when using {{each}}


I have the following handlebars template to generate a changelog.md with gitmoji:

# 🎉 {{nextRelease.version}}

{{#with commits}}
{{#if sparkles}}
## ✨ New Features
{{#each sparkles}}
- {{> commitTemplate}}
{{/each}}
{{/if}}
{{/with}}

when the changelog is generated I get results like this (in markdown):

# 🎉 19.15.0

## ✨ New Features
-  first feature commit

-  second feature commit

-  third feature commit

while this visually does not affect the markdown result, I feel that the readability can be a little messy or atleast maybe this is just personal preference, but I would like to get the following result (remove the linebreaks between each feature):

# 🎉 19.15.0

## ✨ New Features
-  first feature commit
-  second feature commit
-  third feature commit

I had been searching and found about this documentation: https://handlebarsjs.com/guide/expressions.html#whitespace-control

So I tried like this:

{{~#each sparkles}}
- {{> commitTemplate}}
{{~/each}}

but this gave me the following wrong result:

# 🎉 19.15.0

## ✨ New Features-  first feature commit
-  second feature commit
-  third feature commit

Also other ways I tried but did not work were:

## ✨ New Features<br>
{{~#each sparkles}}
- {{> commitTemplate}}
{{~/each}}

and:

## ✨ New Features

{{~#each sparkles}}
- {{> commitTemplate}}
{{~/each}}

Solution

  • White-space control is how you should be handling this.

    Note that you can include the ~ character on either the left or right side of your handlebars expression and they don't have to be "balanced" at all. You can include a ~ in a closing expression and not its opening.

    It is a little hard to replicate since it isn't entirely clear what your commitTemplate partial looks like, but my guess is you only need to remove whitespace before the closing {{/each}}, so your full code would look like

    # 🎉 {{nextRelease.version}}
    
    {{#with commits}}
    {{#if sparkles}}
    ## ✨ New Features
    {{#each sparkles}}
    - {{> commitTemplate}}
    {{~/each}}
    {{/if}}
    {{/with}}
    

    Handlebars playground link.