简体   繁体   中英

How to make Prettier to ignore a block of code?

Say we have a line of code:

const a = 'a'; const b = 'b';

and we wouldn't want it to be formatter by Prettier.

What I've tried so far:

1)

// prettier-ignore
const a = 'a'; const b = 'b';
// prettier-ignore-start
const a = 'a'; const b = 'b';
// prettier-ignore-end

In both cases it gets transformed into:

const a = 'a';
const b = 'b';

So how to ignore a block of code?

It sucks, but this isnt currently supported.

While this doesnt work for OP's example, one option is to add the prettier-ignore comment to the start of each line to be ignored, using the /* */ comment style, eg.

/* prettier-ignore */ import { SomeTypeA, SomeTypeB, SomeTypeC } from './some-long-folder-name/super-long-import';
/* prettier-ignore */ import { someFnA, someFnB, someFnC, } from './another-long-folder-name/super-long-import';

In my opinion, this is easier on the eyes than the alternatives;

Letting prettier reformat the imports:

import {
    SomeTypeA,
    SomeTypeB,
    SomeTypeC,
} from './some-long-folder-name/super-long-import';
import {
    someFnA,
    someFnB,
    someFnC,
} from './another-long-folder-name/super-long-import';

Specifying the // prettier-ignore comment above each import:

// prettier-ignore
import { SomeTypeA, SomeTypeB, SomeTypeC } from './some-long-folder-name/super-long-import';
// prettier-ignore
import { someFnA, someFnB, someFnC, } from './another-long-folder-name/super-long-import';

The reason why // prettier-ignore does not work here is that // prettier-ignore will exclude the next node in the abstract syntax tree from formatting (see https://prettier.io/docs/en/ignore.html ).

In your case the next node would only be const a = 'a'; . For instance,

// prettier-ignore
const a = 
  'a';

would be preserved after formatting.

If you want to keep both assignments in one line without changing the prettier configuration for your whole file, you could use destructuring assignment if you are using es6 or node:

const [a, b] = ["a", "b"];

Sometimes multiple statements can be wrapped in a block with // prettier-ignore in front of it:

// prettier-ignore
{
abcRouter('/api/abc', server);
xRouter  ('/api/x', server);
}

Of course, that doesn't make sense for block-level const declarations, but you wrote that was not your actual code and just an example. So that's a solution that works in some but not in all cases. Overall, the strategy is to wrap multiple things in one thing that can be prettier-ignore d.

Another option is to move all the code you don't want to format (eg, because it's generated) to a separate file excluded by .prettierignore .

prettier-ignore-start and prettier-ignore-end are supported only in Markdown .

You can ignore the whole method

// prettier-ignore
function myFunc() {
    const a = 'a'; const b = 'b';
    return a + b;
}

Actually I tried only on typescript. But I think should works on JS as well.

You can ignore a code block is not supported at the moment, your option is is to only use // prettier-ignore

example below:

// prettier-ignore
const a = 'a';
const b = 'b';

// prettier-ignore
function xyz() {
 console.log({a, b})
}

known issue -> https://github.com/prettier/prettier/issues/5287

Docs -> https://prettier.io/docs/en/ignore.html#javascript

To disable the auto line break in the VS code.

Open vs code => Code => Preferences => Settings => In the search field type: Prettier Now from the provided Prettier settings, choose the Prettier: Print Width

r/vscode - To disable the auto line break in the VS code. Screenshot

And Instead of 80, you can make it a big number. Eg: 999999 Now you don't have to worry about the line break.

https://www.reddit.com/r/vscode/comments/lkz3d7/to_disable_the_auto_line_break_in_the_vs_code/

What worked for me was using this

<!-- prettier-ignore -->
{% extends "main/base.html" %}
{% load humanize static %}
{% block base_content %}
<!-- prettier-ignore-end -->

This was for django and Vue CDN

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM