Configuración de Prettier
Instala y configura Prettier para un formateo de código consistente en tu proyecto React y Next.js.
Receta
Tarjeta de receta de referencia rápida — lista para copiar y pegar.
# Instala Prettier
npm install --save-dev prettier
# Comprueba el formateo (compatible con CI, sale con error en violaciones)
npx prettier --check .
# Formatea todos los archivos
npx prettier --write .
# Formatea archivos específicos
npx prettier --write "src/**/*.{ts,tsx,css,json}"Cuándo usarlo: Cada proyecto con más de un colaborador, o cualquier proyecto donde quieras dejar de debatir el estilo de código.
Ejemplo de Trabajo
// .prettierrc
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"bracketSpacing": true,
"arrowParens": "always",
"endOfLine": "lf",
"plugins": ["prettier-plugin-tailwindcss"]
}# .prettierignore
node_modules/
.next/
out/
coverage/
pnpm-lock.yaml
package-lock.json
*.min.js// scripts de package.json
{
"scripts": {
"format": "prettier --write .",
"format:check": "prettier --check ."
}
}// .vscode/settings.json (formateo al guardar)
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}Lo que esto demuestra:
.prettierrccon configuración recomendada para proyectos React/Next.js.prettierignorepara omitir la salida de compilación y archivos de bloqueo- scripts de npm para formateo y comprobación
- Configuración de formateo al guardar en VS Code
Análisis Profundo
Cómo Funciona
- Prettier es un formateador de código opinionado — analiza tu código e lo reimprimo con un estilo consistente
- Admite TypeScript, JSX, CSS, JSON, Markdown y más fuera de la caja
- El archivo
.prettierrccontrola las opciones; la mayoría de los equipos solo cambian algunos valores predeterminados --checksale con un código distinto de cero cuando los archivos no están formateados (usar en CI)--writeformatea archivos en su lugar
Variaciones
Opciones clave explicadas:
| Opción | Por Defecto | Recomendado | Lo Que Hace |
|---|---|---|---|
semi | true | true | Agrega puntos y comas al final de las declaraciones |
singleQuote | false | false o true | Usa comillas simples en lugar de dobles |
tabWidth | 2 | 2 | Número de espacios por nivel de indentación |
trailingComma | "all" | "all" | Agrega comas finales en todas partes válidas |
printWidth | 80 | 80 | Longitud de línea antes de ajuste |
bracketSpacing | true | true | Espacios en literales de objeto { foo } |
arrowParens | "always" | "always" | Paréntesis alrededor de parámetros de funciones flecha simples |
endOfLine | "lf" | "lf" | Estilo de terminación de línea |
Clasificación de clases Tailwind CSS:
npm install --save-dev prettier-plugin-tailwindcss{
"plugins": ["prettier-plugin-tailwindcss"]
}Este plugin ordena automáticamente las clases de Tailwind en el orden recomendado.
Formatos de archivo de configuración admitidos:
.prettierrc(JSON).prettierrc.json.prettierrc.jso.prettierrc.cjs.prettierrc.mjsprettier.config.js- clave
"prettier"enpackage.json
Notas de TypeScript
// Prettier maneja el formateo de TypeScript fuera de la caja.
// No se requiere analizador adicional ni plugin para archivos .ts y .tsx.
// Formatea anotaciones de tipo, genéricos, interfaces y
// uniones de tipo consistentemente:
type Props = {
name: string;
age: number;
onSubmit: (data: FormData) => void;
};Trampas
Cosas que te morderán. Cada trampa incluye qué sale mal, por qué sucede y la solución.
-
Conflictos con ESLint — Prettier y ESLint quieren controlar el formateo. Ejecutar ambos sin coordinación produce un bucle de corrección infinita. Solución: Usa
eslint-config-prettierpara desactivar las reglas de formateo de ESLint. Ver Integración de ESLint + Prettier. -
printWidth no es un límite estricto — Prettier trata
printWidthcomo una guía, no como un máximo. Las cadenas largas, las importaciones y los props JSX pueden excederla. Solución: Acepta este comportamiento; Prettier optimiza para legibilidad, no para límites de columna estrictos. -
Formateo al guardar no funciona — VS Code puede estar usando un formateador predeterminado diferente. Solución: Establece
"editor.defaultFormatter": "esbenp.prettier-vscode"y asegúrate de que la extensión esté instalada. -
.prettierignore es requerido — Sin él, Prettier formatea la salida de compilación, archivos de bloqueo y código generado. Solución: Siempre crea un archivo
.prettierignore, o Prettier perderá tiempo en archivos que no te importan. -
El orden de carga del plugin importa — Si usas múltiples plugins de Prettier, pueden entrar en conflicto. Solución:
prettier-plugin-tailwindcsssiempre debe estar al final en el arrayplugins.
Alternativas
Otras formas de resolver el mismo problema — y cuándo cada una es la mejor opción.
| Alternativa | Úsalo Cuando | No Lo Uses Cuando |
|---|---|---|
| Biome | Quieres una única herramienta para linting y formateo | Necesitas plugins de Prettier (p. ej., clasificación de Tailwind) |
dprint | Quieres un formateador rápido basado en Rust con más opciones de configuración | Quieres formateo opinionado con cero configuración |
| Formateo solo del editor | Proyecto solo con un editor | Proyecto en equipo o se necesita cumplimiento en CI |
Preguntas Frecuentes
¿Cuál es la diferencia entre --check y --write?
--checksale con un código distinto de cero si algún archivo no está formateado (usar en CI).--writeformatea archivos en su lugar (usar localmente).- Nunca uses
--writeen CI; modificaría archivos sin confirmarlos.
¿Por qué se requiere un archivo .prettierignore?
- Sin él, Prettier formatea la salida de compilación (
.next/), archivos de bloqueo y código generado. - Esto desperdicia tiempo y puede producir cambios no deseados.
- Siempre crea
.prettierignorepara omitir archivos que no te importan.
Trampa: ¿Por qué Prettier excede mi configuración de printWidth?
printWidthes una guía, no un máximo estricto.- Prettier optimiza para legibilidad, por lo que las cadenas largas, las importaciones y los props JSX pueden excederla.
- Acepta este comportamiento; imponer límites de columna estrictos producirá un peor formateo.
¿Cómo configuro el formateo al guardar en VS Code?
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}Establece el formateador predeterminado tanto globalmente como por lenguaje.
¿Qué formatos de archivo de configuración admite Prettier?
.prettierrc(JSON).prettierrc.json,.prettierrc.js,.prettierrc.cjs,.prettierrc.mjsprettier.config.js- clave
"prettier"enpackage.json
¿Cómo agrego la clasificación de clases de Tailwind CSS?
npm install --save-dev prettier-plugin-tailwindcss{ "plugins": ["prettier-plugin-tailwindcss"] }Este plugin debe estar al final en el array plugins.
Trampa: ¿Por qué el formateo al guardar no funciona aunque Prettier esté instalado?
- VS Code puede estar usando un formateador predeterminado diferente.
- Múltiples extensiones de formateador instaladas causan ambigüedad.
- Establece
"editor.defaultFormatter": "esbenp.prettier-vscode"explícitamente por lenguaje.
¿Prettier maneja archivos TypeScript fuera de la caja?
- Sí. No se requiere analizador adicional ni plugin para archivos
.tsy.tsx. - Prettier formatea anotaciones de tipo, genéricos, interfaces y uniones de tipo.
¿Cuáles son la configuración de Prettier recomendada para un proyecto Next.js?
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"endOfLine": "lf"
}¿Cómo formateo solo tipos de archivo específicos?
npx prettier --write "src/**/*.{ts,tsx,css,json}"Usa patrones glob para dirigirse a extensiones específicas.
¿Prettier entra en conflicto con ESLint?
- Sí, si ambos están configurados para manejar el formateo.
- Usa
eslint-config-prettierpara desactivar las reglas de formateo de ESLint. - Ver Integración de ESLint + Prettier para la configuración completa.
¿Puedo usar Prettier para ordenar importaciones de TypeScript?
- Prettier no ordena las importaciones por defecto.
- Usa
prettier-plugin-organize-importso@ianvs/prettier-plugin-sort-importspara ordenar importaciones. - Alternativamente, usa la regla
import/orderde ESLint.
Relacionado
- Integración de ESLint + Prettier — hace que ESLint y Prettier funcionen juntos
- EditorConfig & Configuración de VS Code — consistencia entre editores
- Husky & lint-staged — formateo al commit
- Linting en CI/CD — aplicar formateo en CI