Prettier 1.2
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
1.0 no es el final de Prettier. Seguiremos trabajando en la larga cola de problemas de formato para convertirlo en un formateador de código JavaScript increíble. Debes esperar que las versiones menores como esta cambien cosas pequeñas y casos extremos, pero nada importante o controvertido.
Formato
No imprimir el subárbol al usar prettier-ignore (#1286)
Detenerse al recorrer grupos === (#1294)
En la versión 1.0 se introdujo una regresión donde funciones profundamente anidadas como esta desencadenaban un comportamiento exponencial y no completaban en un tiempo razonable. Implementamos una mitigación para que no sea instantáneo pero al menos se complete en un tiempo razonable.
someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
return someObject.someFunction().then(function () {
});
});
});
});
});
Romper if() si la condición interna se rompe (#1344)
Prettier a veces rompía dentro de una condición if cuando no cabía en 80 columnas, pero imprimía todas las condiciones en una sola línea. Esto se veía muy extraño. Ahora, si el if se rompe, Prettier también romperá las condiciones.
// Before
if (
this.hasPlugin("dynamicImports") && this.lookahead().type === tt.parenLeft
) {
// After
if (
this.hasPlugin("dynamicImports") &&
this.lookahead().type === tt.parenLeft
) {
Evitar romper argumentos en la expansión del último argumento (#1305)
Se solucionó un problema persistente con la expansión del último argumento y argumentos complejos, ya no se ve terriblemente mal.
// Before
manageChildren: jest.fn(function manageChildren(parentTag, moveFromIndices = [
], moveToIndices = [], addChildReactTags = [], addAtIndices = [
], removeAtIndices = []) {
// After
manageChildren: jest.fn(function manageChildren(
parentTag,
moveFromIndices = [],
moveToIndices = [],
addChildReactTags = [],
addAtIndices = [],
removeAtIndices = []
) {
Agregar paréntesis para asignaciones como cuerpo de flecha (#1326)
Estamos ajustando cuándo agregar paréntesis para mejorar la comprensión del código. Esta vez, los agregamos para asignaciones dentro de funciones flecha. Por favor abre issues si crees que deberían haber paréntesis y Prettier no los coloca.
// Before
() => foo = bar + 2;
// After
() => (foo = bar + 2);
Mejorar el formato de expresiones regulares (#1341)
Flow y Babylon eran inconsistentes en cómo imprimían escapes y flags. Ahora los escapes se mantienen intactos respecto a los originales y los flags se ordenan.
// Before
/[\/]\/\u0aBc/mgi;
// After
/[/]\/\u0aBc/gim;
Corregir paréntesis en funciones flecha con comentarios en Flow (#1339)
Con el parser de Flow, Prettier no agregaba paréntesis para funciones de un solo argumento con comentario.
// Before
call(/*object*/ row => {});
// After
call((/*object*/ row) => {});
No alinear paréntesis a la derecha de argumentos (#1345)
Incorrectamente colocábamos comentarios a la derecha de argumentos dentro de la lista de argumentos.
// Before
f(/* ... */) {}
// After
f() /* ... */ {}
Corregir comentarios en literales de plantilla (#1296)
Los comentarios dentro de literales de plantilla podían fallar en ciertas condiciones e insertarse en el ${} equivocado. ¡Ya no más! :)
// 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}])+)+
`
Corregir isPreviousLineEmpty en Windows (#1263)
Las líneas vacías no se preservaban correctamente para switch case en Windows.
// Before
switch (a) {
case x:
case y:
call();
}
// After
switch (a) {
case x:
case y:
call();
}
CLI
Omitir globbing con node-glob cuando el nombre de archivo no es un glob (#1307)
Si ejecutas prettier file.js y file.js no existe, lanzará una excepción en lugar de no hacer nada silenciosamente.
Escribir cambios CLI sincrónicamente (#1292)
Existía una condición de carrera al usar ctrl-c para detener el proceso que podía eliminar archivos. Ahora escribimos los archivos de forma síncrona para que esto ya no ocurra.
