Prettier 1.2
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
La version 1.0 ne marque pas la fin de prettier, nous continuerons à travailler sur les nombreux petits problèmes de formatage pour en faire un formateur de code JavaScript exceptionnel. Vous pouvez vous attendre à ce que les versions mineures comme celle-ci apportent des changements mineurs et corrigent des cas limites, sans modifications majeures ou controversées.
Formatage
Ne pas imprimer le sous-arbre avec prettier-ignore (#1286)
Interrompre le parcours des groupes === (#1294)
Une régression introduite dans la 1.0 faisait que les fonctions profondément imbriquées déclenchaient un comportement exponentiel et ne terminaient plus dans un temps raisonnable. Nous avons ajouté une atténuation pour que ce ne soit pas instantané mais au moins réalisable en un temps acceptable.
someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
});
});
});
});
});
Sauter if() si la condition interne dépasse (#1344)
prettier cassait parfois à l'intérieur d'une condition if quand elle dépassait 80 colonnes, tout en imprimant toutes les conditions sur une seule ligne. C'était visuellement étrange. Désormais, si le if saute, prettier fera également sauter les conditions.
// Before
if (
this.hasPlugin("dynamicImports") && this.lookahead().type === tt.parenLeft
) {
// After
if (
this.hasPlugin("dynamicImports") &&
this.lookahead().type === tt.parenLeft
) {
Éviter de casser les arguments lors de l'expansion du dernier argument (#1305)
Un problème de longue date concernant l'expansion du dernier argument et les arguments complexes a été résolu, le résultat n'est plus désastreux.
// Before
manageChildren: jest.fn(function manageChildren(parentTag, moveFromIndices = [
], moveToIndices = [], addChildReactTags = [], addAtIndices = [
], removeAtIndices = []) {
// After
manageChildren: jest.fn(function manageChildren(
parentTag,
moveFromIndices = [],
moveToIndices = [],
addChildReactTags = [],
addAtIndices = [],
removeAtIndices = []
) {
Ajouter des parenthèses pour les assignations dans les fonctions fléchées (#1326)
Nous affinons quand ajouter des parenthèses pour améliorer la compréhension du code. Cette fois, nous les ajoutons pour les assignations dans les fonctions fléchées. Ouvrez des issues si vous pensez qu'il devrait y avoir des parenthèses et que prettier ne les ajoute pas.
// Before
() => foo = bar + 2;
// After
() => (foo = bar + 2);
Améliorer l'impression des regex (#1341)
Flow et Babylon avaient des incohérences dans l'impression des échappements et flags. Désormais les échappements restent identiques à l'original et les flags sont triés.
// Before
/[\/]\/\u0aBc/mgi;
// After
/[/]\/\u0aBc/gim;
Corriger les parenthèses des fonctions fléchées avec commentaires dans flow (#1339)
Avec le parseur Flow, prettier n'ajoutait pas de parenthèses pour les fonctions à un seul argument avec un commentaire.
// Before
call(/*object*/ row => {});
// After
call((/*object*/ row) => {});
Ne pas aligner les parenthèses à droite des arguments (#1345)
Nous placions incorrectement un commentaire à droite des arguments dans la liste des paramètres.
// Before
f(/* ... */) {}
// After
f() /* ... */ {}
Corriger les commentaires dans les littéraux de template (#1296)
Les commentaires dans les littéraux de template pouvaient planter dans certains cas ou être insérés au mauvais endroit dans ${}, fini :)
// 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}])+)+
`
Corriger isPreviousLineEmpty sur Windows (#1263)
Les lignes vides n'étaient pas correctement préservées pour les switch case sous Windows.
// Before
switch (a) {
case x:
case y:
call();
}
// After
switch (a) {
case x:
case y:
call();
}
CLI
Ignorer le globbing avec node-glob quand le nom de fichier n'est pas un glob (#1307)
Si vous exécutez prettier file.js et que file.js n'existe pas, une exception sera levée au lieu de ne rien faire silencieusement.
Écrire les changements CLI de manière synchrone (#1292)
Il existait une condition de concurrence lorsqu'on utilisait ctrl-c pour arrêter le processus, ce qui pouvait supprimer des fichiers. Maintenant, nous écrivons les fichiers de manière synchrone pour éviter cela.
