Coma final después de la última línea en el objeto

4 minutos de lectura

Avatar de usuario de SiiilverSurfer
SiiilverSurfer

Estoy usando Prettier en VS Code. Me di cuenta de que al usar el formato al guardar, Prettier agrega comas finales en la última línea de un objeto cada vez.

Por ejemplo, digamos que tengo un objeto JS como este:

obj = {
 hello: 'hello',
 world: 'world'
}

Más bonito lo convierte en esto:

obj = {
 hello: 'hello',
 world: 'world',
}

Observe la coma extra después de 'world'

No encontré en la configuración una opción para solucionar esto.

  • No tengo idea de más bonito, pero ¿no está esto relacionado? prettier.io/docs/en/options.html#trailing-commas

    – ASDF Gerte

    22 de abril de 2020 a las 16:53

  • para mí, el comportamiento de más bonito es opuesto, elimina la coma final.

    – Shub

    22 de abril de 2020 a las 16:55

  • Puedes probar "trailingComma": "all" entonces o comprueba si también eres eslint. Eso podría estar anulando alguna configuración.

    – Zuckerberg

    22 de abril de 2020 a las 16:56


puedes actualizar .prettierrc.json y establecer la opción trailingComma a none como:

{
  "trailingComma" : "none",
  ...
}

avatar de usuario de gschenk
gschenk

Las comas finales son una convención de estilo de código que se introdujo para evitar diferencias falsas en los controles de versión (es decir, Git).

Imagina que tienes un código de versión controlada y tienes que cambiarlo. Cuando agrega una nueva línea a su objeto sin la coma final, deberá cambiar la última línea original agregando una coma. En el control de versiones, esto aparece como dos líneas modificadas. El revisor de código o un futuro desarrollador deben verificar si efectivamente cambió la última línea o si solo agregó la coma.

La respuesta de Zuckerberg te muestra cómo cambiarlo. Sin embargo, es mejor cambiar de estilo que cambiar más bonitaestilo de

  • Solución: aplique el cambio a todo su código base, confirme eso y agregue el compromiso a .git-blame-ignore-revs por lo que no aparece en la culpa – ver, por ejemplo akrabat.com/ignoring-revisions-with-git-blame

    – gimbolandia

    1 de junio de 2021 a las 15:13

  • ¡Pero el compromiso que agrega un nuevo elemento no debe ignorarse!

    – Merwok

    12 de marzo a las 19:22

  • Este es un gran punto, creo que el último elemento debería estar en el historial de cambios si el cambio no está relacionado. Recomiendo usar trailingComma: "es5" (el valor predeterminado se cambia de none a es5 de v2.0.0 )

    – Anjan Talatam

    15 de abril a las 2:58

Avatar de usuario de David Federspiel
David Federspiel

Las comas finales ya son un estándar porque dan como resultado un historial de confirmación más limpio. Si tiene que agregar una propiedad en el futuro, git mostrará una sola línea cambiada en lugar de una nueva línea Y la nueva coma en la línea anterior.

Para modificar la configuración en Código VSC:

  1. Vaya a ARCHIVO -> PREFERENCIAS -> AJUSTES. (Menús de código VS)
  2. La ventana de configuración debería abrirse. Arriba (Top) hay una búsqueda. Escribe “Más bonita”
  3. Debería ver los ajustes Prettier disponibles. Puedes modificarlos

ahora cambia trailingComma a none

Las comas finales son JS modernas, pero si realmente no te gustan se pueden deshabilitar.

  • ¿podría agregar alguna fuente, algún artículo sobre “coma final – js moderno”?

    – Yevhenii Herasymchuk

    21 oct 2020 a las 10:31

  • @YevheniiHerasymchuk No es solo JS. Es, por ejemplo, PHP también. Las comas finales evitan conflictos cuando dos personas agregan elementos a una matriz/objeto y luego quieren fusionarse con git. Con una coma final, en lugar de una línea modificada + línea insertada, solo obtiene una línea insertada que no producirá ningún conflicto.

    – Mārtiņš Briedis

    27 de abril de 2022 a las 9:23

Avatar de usuario de Roma N
Roma norte

En mi caso, la configuración anterior no fue suficiente:

{
  "trailingComma" : "none",
}

Para que esto funcione para mí, además de esta configuración, tuve que eliminar de ajuste.json:

"[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
},

Y con la extensión ya instalada Prettier a continuación, ingrese el comando
ctrl + shift + P en vscode

Haga clic en Configure...

Elegir Prettier - Code formatter

Ahora esto:

const a = {
  a: 10,
  b: 15,
};

se convierte en esto:

const a = {
  a: 10,
  b: 15
}

  • ¿podría agregar alguna fuente, algún artículo sobre “coma final – js moderno”?

    – Yevhenii Herasymchuk

    21 oct 2020 a las 10:31

  • @YevheniiHerasymchuk No es solo JS. Es, por ejemplo, PHP también. Las comas finales evitan conflictos cuando dos personas agregan elementos a una matriz/objeto y luego quieren fusionarse con git. Con una coma final, en lugar de una línea modificada + línea insertada, solo obtiene una línea insertada que no producirá ningún conflicto.

    – Mārtiņš Briedis

    27 de abril de 2022 a las 9:23

Avatar de usuario de Niccolò Mineo
Nicolás Mineo

Si alguien se pregunta cómo tener VSCode prettier la extensión se comporta como pre-commit‘s prettier gancho, esto funcionó para mí:

  "prettier.trailingComma": "all"

Lo anterior debe usarse en combinación con prettier como eldefaultFormatter para los archivos relevantes, como lo sugieren otros.

Si eso por sí solo no es suficiente y también está usando EditorConfig para otras personalizaciones, es posible que deba agregar también:

  "prettier.useEditorConfig": false

¿Ha sido útil esta solución?