Zum Hauptinhalt springen

Prettier 1.2

· 4 Min. Lesezeit
Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

1.0 ist nicht das Ende von Prettier. Wir werden weiterhin an den langen Schwanz von Formatierungsproblemen arbeiten, um es zu einem herausragenden JavaScript-Codeformatierer zu machen. Bei Nebenversionen wie dieser können Sie erwarten, dass kleinere Dinge und Randfälle geändert werden, aber nichts Grundlegendes oder Kontroverses.

Formatierung

Teilbaum nicht ausgeben bei Verwendung von prettier-ignore (#1286)

Abbruch beim Durchlaufen von ===-Gruppen (#1294)

In Version 1.0 wurde eine Regression eingeführt, bei der tief verschachtelte Funktionen exponentielles Verhalten auslösten und nicht mehr in angemessener Zeit abschlossen. Wir haben eine Gegenmaßnahme implementiert, sodass es zwar nicht sofort fertig ist, aber in vertretbarer Zeit abschließt.

someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
});
});
});
});
});

Bedingung in if-Anweisungen umbrechen, wenn sie nicht passt (#1344)

Prettier brach manchmal innerhalb einer if-Bedingung um, wenn sie nicht in 80 Zeichen passte, gab aber alle Bedingungen in einer Zeile aus. Das sah sehr merkwürdig aus. Jetzt bricht Prettier die Bedingungen ebenfalls um, wenn die if-Anweisung umbricht.

// Before
if (
this.hasPlugin("dynamicImports") && this.lookahead().type === tt.parenLeft
) {

// After
if (
this.hasPlugin("dynamicImports") &&
this.lookahead().type === tt.parenLeft
) {

Zeilenumbrüche bei Argumenten für letzte Argument-Expansion vermeiden (#1305)

Ein langjähriges Problem bei der letzten Argument-Expansion mit komplexen Argumenten wurde behoben, sodass es nicht mehr unübersichtlich aussieht.

// Before
manageChildren: jest.fn(function manageChildren(parentTag, moveFromIndices = [
], moveToIndices = [], addChildReactTags = [], addAtIndices = [
], removeAtIndices = []) {

// After
manageChildren: jest.fn(function manageChildren(
parentTag,
moveFromIndices = [],
moveToIndices = [],
addChildReactTags = [],
addAtIndices = [],
removeAtIndices = []
) {

Klammern für Zuweisungen als Rumpf von Pfeilfunktionen hinzufügen (#1326)

Wir optimieren kontinuierlich, wann Klammern gesetzt werden, um das Codeverständnis zu verbessern. Diesmal fügen wir sie bei Zuweisungen innerhalb von Pfeilfunktionen hinzu. Bitte melden Sie Issues, wenn Sie denken, dass Klammern notwendig sind, Prettier sie aber nicht setzt.

// Before
() => foo = bar + 2;

// After
() => (foo = bar + 2);

Verbesserung der Regex-Darstellung (#1341)

Flow und Babylon waren inkonsistent bei der Darstellung von Escapes und Flags. Jetzt bleiben die Escapes unverändert im Vergleich zum Original und die Flags werden sortiert.

// Before
/[\/]\/\u0aBc/mgi;

// After
/[/]\/\u0aBc/gim;

Klammern bei Pfeilfunktionen mit Kommentaren in Flow korrigieren (#1339)

Beim Flow-Parser fügte Prettier keine Klammern für Einzelargument-Funktionen mit Kommentar hinzu.

// Before
call(/*object*/ row => {});

// After
call((/*object*/ row) => {});

Klammern nicht rechts von Argumenten einfügen (#1345)

Wir platzierten Kommentare fälschlicherweise rechts von Argumenten innerhalb der Argumentliste.

// Before
f(/* ... */) {}

// After
f() /* ... */ {}

Kommentare in Template-Literals korrigieren (#1296)

Kommentare innerhalb von Template-Literals führten unter bestimmten Bedingungen zu Abstürzen und wurden an falschen Stellen wie ${} eingefügt. Das ist jetzt behoben :)

// Before
stdin: TypeError: Cannot read property 'comments' of undefined

// After
`
(?:${escapeChar}[\\S\\s]|(?:(?!${// Using `XRegExp.union` safely rewrites backreferences in `left` and `right`.
// Intentionally not passing `basicFlags` to `XRegExp.union` since any syntax
// transformation resulting from those flags was already applied to `left` and
// `right` when they were passed through the XRegExp constructor above.
XRegExp.union([left, right], '', {conjunction: 'or'}).source})[^${escapeChar}])+)+
`

isPreviousLineEmpty auf Windows korrigieren (#1263)

Leerzeilen wurden bei switch-case-Anweisungen unter Windows nicht korrekt beibehalten.

// Before
switch (a) {
case x:

case y:
call();
}

// After
switch (a) {
case x:
case y:
call();
}

CLI

Glob-Pattern-Auflösung überspringen, wenn Dateiname kein Glob ist (#1307)

Wenn Sie prettier file.js ausführen und file.js nicht existiert, wird eine Exception geworfen statt stillschweigend nichts zu tun.

CLI-Änderungen synchron ausgeben (#1292)

Es gab eine Wettlaufsituation (Race Condition), wenn Sie den Prozess mit Strg-C beendeten, bei der Dateien gelöscht werden konnten. Jetzt schreiben wir Dateien synchron, sodass dies nicht mehr passiert.