Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prettier formatting configuration

I'm pulling my hair trying to configure Prettier formatting for Angular HTML component. I tried different configuration overriding but I can't get what I want.

By default, on VS Code + Prettier, the following markup :

<ng-container *ngIf="emailRef.hasError('email')">A valid email address must be used</ng-container>

is formatted to (because of line length) :

<ng-container *ngIf="emailRef.hasError('email')"
  >A valid email address must be used</ng-container
>

which I don't like at all. I don't want Prettier to split the tag like that. I'd rather prefer :

<ng-container *ngIf="emailRef.hasError('email')">
  A valid email address must be used
</ng-container>

Does anyone knows how to override its default behavior ? I'm OK with the default formatting when multiple attributes are used, like in :

<input
  id="email"
  name="email"
  type="email"
  email
  required
  [(ngModel)]="email"
  #emailRef="ngModel"
/>
like image 639
Fabian Vilers Avatar asked Jan 11 '20 08:01

Fabian Vilers


People also ask

How do I use Prettier to format all files?

From the directory you want to format, run Prettier with --write : prettier --write . This will format the entire directory recursively with Prettier. If you'd rather not install Prettier globally, then you can achieve the same effect with the npx command (the npm package runner):


2 Answers

What works for me is to add a space between the content and the opening and closing tags:

<ng-container *ngIf="emailRef.hasError('email')"> A valid email address must be used </ng-container>

With the spaces, prettier formats it correctly

like image 73
C_Ogoo Avatar answered Sep 29 '22 06:09

C_Ogoo


I know this question is months old, but I posted something similar on Prettier's issues and found a better solution. Leaving it here for people who land here by search.

Set the option --html-whitespace-sensitivity to ignore and you will get your desired output:

<ng-container *ngIf="emailRef.hasError('email')">
  A valid email address must be used
</ng-container>

Although this is not recommended as whitespace formatting can cause issues like extra spacing around text and stuff, which might affect your UI design's consistency.

More info about this here: https://prettier.io/blog/2018/11/07/1.15.0.html#whitespace-sensitive-formatting


Thanks to this reply on GitHub: https://github.com/prettier/prettier/issues/9381#issuecomment-707156908

like image 30
Preetesh Avatar answered Sep 29 '22 06:09

Preetesh