Prettier 3.3: Nya Flow-funktioner och många buggfixar
Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →
Den här versionen inkluderar stöd för nya Flow-funktioner som komponent- och hook-deklarationer. Alla dessa funktioner implementerades av ingenjörerna i Flow-teamet - tack!
Om du uppskattar Prettier och vill stödja vårt arbete, överväg att sponsra oss direkt via vår OpenCollective eller genom att sponsra de projekt vi förlitar oss på, såsom typescript-eslint, remark och Babel. Tack för ert fortsatta stöd!
Höjdpunkter
Flow
Stöd för declare namespace-utskrift (#16066 av @SamChou19815)
// Input
declare namespace foo {
declare var bar: string;
}
// Prettier 3.2
// does not parse
// Prettier 3.3
declare namespace foo {
declare var bar: string;
}
Stöd för komponentsyntax-utskrift (#16191 av @SamChou19815)
// Input
component MyComponent(a: string, b: number) renders SomeComponent {
return <OtherComponent />;
}
hook useMyHook(a: string) {
return useState(a);
}
// Prettier 3.2
// does not parse
// Prettier 3.3
component MyComponent(a: string, b: number) renders SomeComponent {
return <OtherComponent />;
}
hook useMyHook(a: string) {
return useState(a);
}
Stöd för big int Enums (#16268 av @gkz)
Lägger till stöd för big int Flow Enums.
// Input
enum E {
A = 0n,
B = 1n,
}
// Prettier 3.2
// error
// Prettier 3.3
enum E {
A = 0n,
B = 1n,
}
Stöd för inexakta tuple-typer (#16271 av @gkz)
Lägger till stöd för Flows inexakta tuple-typer.
// Input
type T = [number, ...];
// Prettier 3.2
type T = [number];
// Prettier 3.3
type T = [number, ...];
Stöd för 'implies'-typguardvariant (#16272 av @gkz)
Lägger till stöd för Flows implies-typguardvariant. Uppdaterar även flow-parser-beroendet.
// Input
declare function f(x: mixed): implies x is T;
// Prettier 3.2
// error
// Prettier 3.3
declare function f(x: mixed): implies x is T;
Andra ändringar
JavaScript
Ta bort citationstecken från nycklar i importattribut (#15888 av @sosukesuzuki)
// Input
import json from "./mod.json" with { "type": "json" };
// Prettier 3.2
import json from "./mod.json" with { "type": "json" };
// Prettier 3.3
import json from "./mod.json" with { type: "json" };
Åtgärda instabil objektutskrift (#16058 av @fisker)
// Input
a = {"\a": 1, "b": 2}
// Prettier 3.2 (--quote-props consistent)
a = { "a": 1, "b": 2 };
// Prettier 3.2 (--quote-props as-needed)
a = { "a": 1, b: 2 };
// Prettier 3.3
a = { a: 1, b: 2 };
Formatera inbäddad GQL i malliteral-uttryck (#16064 av @keithlayne)
// Input
/* GraphQL */ `
query foo { id }
`;
// Prettier 3.2
/* GraphQL */ `
query foo { id }
`;
// Prettier 3.3
/* GraphQL */ `
query foo {
id
}
`;
Förbättra formatering av Reacts useImperativeHandle-hook (#16070 av @Jaswanth-Sriram-Veturi)
// Input
useImperativeHandle(ref, () => {
/* Function body */
}, []);
// Prettier 3.2
useImperativeHandle(
ref,
() => {
/* Function body */
},
[],
);
// Prettier 3.3
useImperativeHandle(ref, () => {
/* Function body */
}, []);
Tillåt radbrytningar i medlemsuttryck inom mallinterpolationer (#16116 av @bakkot)
När en radbrytning redan finns i en mallinterpolation, låt den finnas kvar även om det är ett medlemsuttryck. Observera att (sedan #15209) Prettier inte kommer infoga en radbrytning inom en interpolation när ingen redan finns.
// Input
`template with ${
very.very.very.very.very.very.very.very.very.very.very.long.chain
}`;
// Prettier 3.2
`template with ${very.very.very.very.very.very.very.very.very.very.very.long.chain}`;
// Prettier 3.3
`template with ${
very.very.very.very.very.very.very.very.very.very.very.long.chain
}`;
Åtgärda dynamisk import när modulkällan är en mallsträng (#16267 av @fisker)
// Input
const module = await import(`data:text/javascript,
console.log("RUN");
`);
// Prettier 3.2
const module = await (`data:text/javascript,
console.log("RUN");
`);
// Prettier 3.3
const module = await import(`data:text/javascript,
console.log("RUN");
`);
TypeScript
Lägg till saknade parenteser för TSInferType (#16031 av @fisker)
// Input
type Foo<T> = T extends (infer U extends number) | { a: infer U extends number }
? U
: never;
// Prettier 3.2
type Foo<T> = T extends infer U extends number | { a: infer U extends number }
? U
: never;
// Prettier 3.3
type Foo<T> = T extends (infer U extends number) | { a: infer U extends number }
? U
: never;
Kasta fel för duplicerade åtkomstmodifierare (#16040 av @fisker, @auvred)
// Input
class Foo {
public public bar() {};
}
// Prettier 3.2
class Foo {
public bar() {}
}
// Prettier 3.3
SyntaxError: Accessibility modifier already seen. (2:10)
1 | class Foo {
> 2 | public public bar() {};
| ^^^^^^
3 | }
Respektera --no-semi för readonly-klassfält (#16133 av @sxzz)
// Input
class A {
field
readonly [expr] = true
}
// Prettier 3.2
class A {
field;
readonly [expr] = true
}
// Prettier 3.3
class A {
field
readonly [expr] = true
}
Lägg till nödvändiga parenteser för yield-uttryck (#16194 av @kirkwaiblinger)
Lägger till parenteser runt yield-uttryck om föräldern är en vinkelklammer-typhänvisning.
// Input
function* g() {
const y = <T>(yield x);
}
// Prettier 3.2
function* g() {
const y = <T>yield x;
}
// Prettier 3.3
function* g() {
const y = <T>(yield x);
}
Markdown
Förbättra radbrytning för kodblock i markdown och JSX i MDX (#15993 av @seiyab)
<!-- Input -->
```css
img {
filter: drop-shadow(2px 2px 0 hsl(300deg 100% 50%)) drop-shadow(
-2px -2px 0 hsl(210deg 100% 50%)
)
drop-shadow(2px 2px 0 hsl(120deg 100% 50%)) drop-shadow(
-2px -2px 0 hsl(30deg 100% 50%)
);
}
```
<!-- Prettier 3.2 -->
```css
img {
filter: drop-shadow(2px 2px 0 hsl(300deg 100% 50%)) drop-shadow(
-2px -2px 0 hsl(210deg 100% 50%)
)
drop-shadow(2px 2px 0 hsl(120deg 100% 50%)) drop-shadow(
-2px -2px 0 hsl(30deg 100% 50%)
);
}
```
<!-- Prettier 3.3 -->
```css
img {
filter: drop-shadow(2px 2px 0 hsl(300deg 100% 50%))
drop-shadow(-2px -2px 0 hsl(210deg 100% 50%))
drop-shadow(2px 2px 0 hsl(120deg 100% 50%))
drop-shadow(-2px -2px 0 hsl(30deg 100% 50%));
}
```
<!-- Input -->
<ExternalLink href="http://example.com">Prettier</ExternalLink> is an opinionated-code-formatter-that-support-many-languages-and-integrate-with-most-editors
<!-- Prettier 3.2 -->
<ExternalLink href="http://example.com">Prettier</ExternalLink> is an opinionated-code-formatter-that-support-many-languages-and-integrate-with-most-editors
<!-- Prettier 3.3 -->
<ExternalLink href="http://example.com">Prettier</ExternalLink> is an
opinionated-code-formatter-that-support-many-languages-and-integrate-with-most-editors
Lägg till ny rad mellan markdown-fotnotsdefinitioner (#16063 av @Atema)
<!-- Input -->
[^a]: Footnote A
[^b]: Footnote B
<!-- Prettier 3.2 -->
[^a]: Footnote A
[^b]: Footnote B
<!-- Prettier 3.3 -->
[^a]: Footnote A
[^b]: Footnote B
Förbättra radbrytning för markdown / MDX (#16158 av @seiyab)
{ "proseWrap": "always" }
<!-- Input -->
\
word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word
<!-- Prettier 3.2 -->
\
word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word
<!-- Prettier 3.3 -->
\
word very-very-very-very-very-very-very-very-very-very-long-word
very-very-very-very-very-very-very-very-very-very-long-word
API
Lägg till stöd för package.yaml-konfiguration (#16157 av @danielbayley)
Aktiverar stöd för att läsa prettier-konfiguration från package.yaml.
# package.yaml
prettier:
semi: false
singleQuote: true
