Hoppa till huvudinnehållet

Prettier 1.2

· 4 min att läsa
Inofficiell Beta-översättning

Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →

1.0 är inte slutet för Prettier - vi kommer fortsätta arbeta med långsvansformateringsproblem för att göra det till en fantastisk JavaScript-kodformaterare. Förvänta dig att mindre versioner som denna ändrar små saker och edge cases men inga större eller kontroversiella förändringar.

Formatering

Skriv inte ut underträdet vid användning av prettier-ignore (#1286)

Avbryt vid traversering av ===-grupper (#1294)

En regression introducerades i 1.0 där djupt nästlade funktioner som denna utlöste exponentiellt beteende och inte längre slutfördes inom rimlig tid. Vi införde en mildring så att det inte är omedelbart men åtminstone slutförs inom rimlig tid.

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

Bryt if () om villkoret inuti bryts (#1344)

Prettier bröt ibland sönder inuti ett if-villkor när det inte fick plats inom 80 kolumner men skrev ändå ut alla villkor på en rad. Det såg väldigt konstigt ut. Nu bryter Prettier även villkoren om if-satsen bryts.

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

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

Undvik att bryta argument för sista argumentexpansion (#1305)

Ett långvarigt problem kring sista argumentexpansion och komplexa argument har fixats, det ser inte längre helt galet ut.

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

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

Lägg till parenteser för tilldelning som kropp i pilfunktion (#1326)

Vi finjusterar när parenteser ska läggas till för att förbättra kodförståelsen. Den här gången lägger vi till dem för tilldelningar inuti pilfunktioner. Öppna gärna ärenden om du anser att parenteser behövs men Prettier inte sätter dem.

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

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

Förbättra regex-utskrift (#1341)

Flow och Babylon var inkonsekventa i hur de skrev ut escapes och flaggor. Nu lämnas escapes oförändrade jämfört med originalet och flaggorna sorteras.

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

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

Fixa parenteser för pilfunktioner med kommentarer i flow (#1339)

Med Flow-parsern lade Prettier inte till parenteser för funktioner med ett argument som hade kommentarer.

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

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

Inlinea inte parentes till höger om argument (#1345)

Vi placerade felaktigt en kommentar till höger om argument inuti argumentlistan.

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

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

Fixa kommentarer i malliteraler (#1296)

Kommentarer inuti malliteraler kunde krascha under vissa förhållanden och hamna i fel ${}, inte längre :)

// 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}])+)+
`

Fixa isPreviousLineEmpty på Windows (#1263)

Tomma rader bevarades inte korrekt för switch case på Windows.

// Before
switch (a) {
case x:

case y:
call();
}

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

CLI

Hoppa över globbning av filnamn med node-glob när filnamnet inte är ett glob-mönster (#1307)

Om du kör prettier file.js och file.js inte finns, kommer det nu att kasta ett undantag istället för att tyst göra ingenting.

Skriv ut CLI-ändringar synkront (#1292)

Det fanns ett tillståndsrace när du använde ctrl-c för att avbryta processen, vilket kunde leda till filradering. Nu skriver vi filändringar synkront så att detta inte längre händer.