El Propósito del Formateo y Linting en el Desarrollo
URL: https://ruvebal.github.io/web-atelier-udit/lessons/es/linting-and-formatting/
📋 Tabla de Contenidos
- ¿Qué es el Formateo?
- ¿Qué es el Linting?
- Cómo el Formateo y Linting se Complementan
- ¿Por Qué Usar Formateo y Linting Juntos?
- Instalar Prettier
- Instalar HTMLHint
- Instalar Stylelint
- Instalar ESLint
- Probar la Configuración
- Solución de Problemas
- 🚀 Inicio Rápido: ¿Qué Necesito Instalar?
- Elige Tu Ruta (Dos Configuraciones)
- Preguntas Críticas de Codificación (Atelier)
- Secuenciación Sugerida para Estudiantes
- Referencias
El Propósito del Formateo y Linting en el Desarrollo
En el desarrollo web moderno, el formateo y el linting desempeñan roles complementarios para mantener código limpio, consistente y libre de errores. Estas prácticas son esenciales para mejorar la calidad del código, la colaboración y la mantenibilidad.
¿Qué es el Formateo?
El formateo se refiere a organizar y estructurar el código de manera consistente y visualmente atractiva. Asegura que el código sea fácil de leer, escribir y entender, tanto para el desarrollador original como para otros que trabajen en el mismo proyecto.
Beneficios Clave del Formateo:
- Legibilidad:
- El código correctamente formateado es más fácil de navegar, reduciendo la carga cognitiva en los desarrolladores.
- Consistencia:
- El estilo uniforme ayuda a los equipos a mantener los mismos estándares de codificación en todos los archivos.
- Automatización:
- Las herramientas de formateo automático ahorran tiempo eliminando la necesidad de formateo manual.
Ejemplos de Formateo:
- Asegurar indentación y espaciado consistentes.
- Hacer cumplir un estándar para saltos de línea, llaves y comillas.
- Alinear elementos en HTML o propiedades en CSS para mejor estructura visual.
¿Qué es el Linting?
El linting implica analizar código para detectar errores potenciales, hacer cumplir estándares de codificación y fomentar mejores prácticas. Un linter revisa la base de código y resalta patrones problemáticos o violaciones, asegurando que se adhiera a pautas predefinidas.
Beneficios Clave del Linting:
- Prevención de Errores:
- Identifica errores comunes como etiquetas de cierre faltantes, variables no utilizadas o sintaxis inválida.
- Cumplimiento de Estándares:
- Fomenta la adhesión a convenciones de codificación y reglas específicas del proyecto.
- Calidad del Código:
- Mejora la confiabilidad general y mantenibilidad del código.
Ejemplos de Linting:
- Resaltar atributos o etiquetas HTML inválidas.
- Detectar errores de sintaxis en JavaScript, como variables no declaradas.
- Hacer cumplir mejores prácticas en CSS, como evitar selectores duplicados.
Cómo el Formateo y Linting se Complementan
Mientras que el formateo asegura que el código se vea consistente y sea fácil de leer, el linting asegura que el código funcione correctamente y se adhiera a los estándares.
-
El Formateo se Enfoca en:
- Cómo se ve el código.
- Ej., Indentación, saltos de línea y espaciado.
-
El Linting se Enfoca en:
- Qué hace el código.
- Ej., Corrección, validez y mejores prácticas.
¿Por Qué Usar Formateo y Linting Juntos?
Al combinar herramientas de formateo y linting, los desarrolladores pueden asegurar que su código sea tanto limpio como funcional:
- Mejora la Colaboración:
- El formateo consistente y la adhesión a estándares facilitan que los equipos trabajen juntos.
- Reduce el Tiempo de Depuración:
- La detección temprana de problemas a través del linting previene que los errores pasen desapercibidos.
- Aumenta la Productividad:
- Las herramientas automatizadas manejan tareas repetitivas, permitiendo a los desarrolladores enfocarse en problemas más complejos.
Guía Paso a Paso para Estudiantes: Instalación y Configuración de Herramientas
Instrucciones para configurar herramientas usando tanto extensiones de Visual Studio Code (VS Code) como comandos npx CLI. De esta manera, los estudiantes pueden elegir su método preferido según su nivel de comodidad.
Instalar Prettier
Prettier es un formateador de código que asegura estilo consistente en toda tu base de código automáticamente.
Definición y Propósito de Prettier
- Definición: Prettier es un formateador de código con opiniones que hace cumplir un estilo consistente analizando tu código y reimprimiéndolo con sus propias reglas, considerando la longitud máxima de línea y otras configuraciones.
- Propósito:
- Consistencia: Asegura que todos los archivos en un proyecto sigan el mismo estilo.
- Legibilidad: Hace el código más fácil de leer y entender.
- Automatización: Elimina el formateo manual, ahorrando tiempo y esfuerzo.
Opción 1: Configurar Prettier Usando VS Code
-
Instalar la extensión Prettier - Code formatter:
- Abrir VS Code.
- Ir al Marketplace de Extensiones (
Ctrl + Shift + X/Cmd + Shift + X). - Buscar “Prettier - Code formatter” y hacer clic en Instalar.
-
Configurar Prettier:
- Abrir Configuración (
Ctrl + ,/Cmd + ,). - Buscar
Editor: Default Formatter. - Establecer el valor en “esbenp.prettier-vscode”.
- Habilitar Format on Save:
- Buscar
Editor: Format On Savey marcar la casilla.
- Buscar
- Abrir Configuración (
-
Probar Prettier:
- Abrir un archivo con formateo inconsistente.
- Guardar el archivo y verificar que Prettier lo formatee automáticamente.
Opción 2: Configurar Prettier Usando npx CLI
-
Instalar Prettier:
- Ejecutar el siguiente comando para instalar Prettier localmente:
npm install prettier --save-dev
- Ejecutar el siguiente comando para instalar Prettier localmente:
-
Crear un archivo de configuración de Prettier:
- Añadir un archivo
.prettierrca tu proyecto con configuraciones personalizadas, ej.:{ "semi": true, "singleQuote": true, "tabWidth": 2 }
- Añadir un archivo
-
Añadir un archivo
.prettierignore:- Especificar archivos o carpetas a excluir del formateo, ej.:
node_modules/ dist/
- Especificar archivos o carpetas a excluir del formateo, ej.:
-
Probar Prettier:
- Formatear archivos directamente desde la terminal:
npx prettier --write "src/**/*.js"
- Formatear archivos directamente desde la terminal:
Instalar HTMLHint
HTMLHint es una herramienta de análisis de código estático específicamente para archivos HTML.
Definición y Propósito de HTMLHint
- Definición: HTMLHint es un linter para HTML que identifica errores de sintaxis, hace cumplir estándares de codificación y ayuda a mejorar la calidad del código HTML.
- Propósito:
- Detección de Errores: Señala problemas como etiquetas faltantes, atributos inválidos o IDs duplicados.
- Cumplimiento de Estándares: Asegura que el HTML se adhiera a mejores prácticas y estándares de codificación.
- Accesibilidad: Fomenta prácticas como usar atributos
altpara imágenes.
Opción 1: Configurar HTMLHint Usando VS Code
-
Instalar la extensión HTMLHint:
- Abrir VS Code.
- Ir al Marketplace de Extensiones y buscar “HTMLHint”.
- Hacer clic en Instalar.
-
Configurar HTMLHint:
- Usar las reglas por defecto proporcionadas por la extensión o crear un archivo
.htmlhintrcen la raíz de tu proyecto (ver Opción 2 abajo).
- Usar las reglas por defecto proporcionadas por la extensión o crear un archivo
-
Probar HTMLHint:
- Abrir un archivo HTML con problemas y verificar que la pestaña Problemas en VS Code muestre advertencias o errores.
Opción 2: Configurar HTMLHint Usando npx CLI
-
Instalar HTMLHint localmente:
- Ejecutar el siguiente comando:
npm install htmlhint --save-dev
- Ejecutar el siguiente comando:
-
Crear un archivo de configuración de HTMLHint:
- Añadir un archivo
.htmlhintrca la raíz de tu proyecto:{ "tagname-lowercase": true, "attr-lowercase": true, "attr-value-double-quotes": true, "doctype-first": true, "id-unique": true, "src-not-empty": true, "tag-pair": true }
- Añadir un archivo
-
Probar HTMLHint:
- Usar la terminal para hacer linting de un archivo HTML:
npx htmlhint src/index.html
- Usar la terminal para hacer linting de un archivo HTML:
Instalar Stylelint
Stylelint es un linter de CSS que hace cumplir estilo consistente y detecta errores en hojas de estilo.
Definición y Propósito de Stylelint
- Definición: Stylelint es un linter moderno de CSS que hace cumplir estilo consistente y detecta errores en tus hojas de estilo.
- Propósito:
- Detección de Errores: Identifica propiedades CSS inválidas y errores de sintaxis.
- Estilo Consistente: Asegura que el CSS se adhiera a un formato consistente.
- Mantenibilidad: Promueve CSS limpio y estructurado.
Opción 1: Configurar Stylelint Usando VS Code
-
Instalar la extensión Stylelint:
- Abrir VS Code.
- Ir al Marketplace de Extensiones y buscar “Stylelint”.
- Hacer clic en Instalar.
-
Usar la configuración por defecto de la extensión o crear un archivo de configuración (ver Opción 2 abajo).
Opción 2: Configurar Stylelint Usando npx CLI
-
Instalar Stylelint:
npm install stylelint stylelint-config-standard stylelint-config-prettier --save-dev -
Crear un archivo
.stylelintrc.json:{ "extends": ["stylelint-config-standard", "stylelint-config-prettier"], "rules": { "indentation": 2, "string-quotes": "double" } } -
Probar Stylelint:
- Ejecutar Stylelint para verificar tus archivos CSS:
npx stylelint "src/**/*.css" - Corregir problemas automáticamente:
npx stylelint "src/**/*.css" --fix
- Ejecutar Stylelint para verificar tus archivos CSS:
Instalar ESLint
ESLint es un linter de JavaScript que hace cumplir convenciones de codificación y detecta errores.
Definición y Propósito de ESLint
- Definición: ESLint es una herramienta de análisis estático para JavaScript que identifica patrones problemáticos y hace cumplir estándares de codificación.
- Propósito:
- Detección de Errores: Resalta errores de sintaxis y errores potenciales.
- Consistencia: Asegura que el código JavaScript se adhiera a estándares.
- Personalización: Proporciona configuración flexible para necesidades específicas del proyecto.
Opción 1: Configurar ESLint Usando VS Code
-
Instalar la extensión ESLint:
- Abrir VS Code.
- Ir al Marketplace de Extensiones y buscar “ESLint”.
- Hacer clic en Instalar.
-
Usar la configuración por defecto proporcionada por la extensión o configurar ESLint (ver Opción 2 abajo).
Opción 2: Configurar ESLint Usando npx CLI
-
Instalar ESLint:
npm install eslint --save-dev -
Inicializar ESLint:
- Ejecutar el siguiente comando para crear un archivo de configuración:
npx eslint --init - Seguir las indicaciones para configurar ESLint para tu proyecto.
- Ejecutar el siguiente comando para crear un archivo de configuración:
-
Crear un archivo
.eslintrc.json:{ "env": { "browser": true, "es2021": true }, "extends": "eslint:recommended", "parserOptions": { "ecmaVersion": 12, "sourceType": "module" }, "rules": { "semi": ["error", "always"], "quotes": ["error", "single"] } } -
Probar ESLint:
- Usar la terminal para hacer linting de archivos JavaScript:
npx eslint "src/**/*.js" - Corregir problemas automáticamente:
npx eslint "src/**/*.js" --fix
- Usar la terminal para hacer linting de archivos JavaScript:
Probar la Configuración
- Crear archivos de muestra para HTML, CSS y JavaScript con errores intencionales.
- Probar cada herramienta para asegurar que funcione como se espera:
- Prettier debe formatear código.
- HTMLHint debe señalar problemas de HTML.
- Stylelint debe detectar errores de CSS.
- ESLint debe resaltar problemas de JavaScript.
Solución de Problemas
- Asegurar que las extensiones estén instaladas en Visual Studio Code.
- Verificar que los archivos de configuración (
.prettierrc,.htmlhintrc,.stylelintrc.json,.eslintrc.json) estén configurados correctamente. - Reiniciar Visual Studio Code para aplicar cambios.
- Ejecutar comandos CLI para mensajes de error detallados (ej.,
npx eslint,npx stylelint).
🚀 Inicio Rápido: ¿Qué Necesito Instalar?
Elige UNA ruta según tu configuración:
Ruta A: Solo VS Code (No se necesita Node.js)
Instala estas extensiones de VS Code:
- Prettier – Code formatter
- HTMLHint
- Stylelint
- ESLint
- Markdownlint
- YAML (Red Hat)
Habilita Format on Save en la configuración de VS Code.
Ruta B: Node.js + Herramientas CLI
Instala Node.js, luego ejecuta:
npm init -y
npm i -D prettier eslint htmlhint stylelint markdownlint-cli
Añade archivos de configuración (copia de los ejemplos abajo).
Elige Tu Ruta (Dos Configuraciones)
Elige la configuración que coincida con tu máquina y nivel de comodidad. Puedes cambiar más tarde.
- A) Sin configuración Node (Solo editor): Usar extensiones de Visual Studio Code para formatear y hacer linting localmente sin instalar Node.js o dependencias del proyecto.
- B) Configuración Node (CLI + scripts): Instalar herramientas vía npm y ejecutarlas con comandos y CI.
Ambas rutas apuntan a cubrir HTML, CSS, JS, Markdown, YAML y JSON.
A) Sin Configuración Node (Solo editor)
Instala estas extensiones de VS Code y habilita Format on Save. Esto cubre formateo y linting para la mayoría de archivos sin una cadena de herramientas Node.
- Prettier – Code formatter (
esbenp.prettier-vscode) - HTMLHint (
HTMLHint.HTMLHint) - Stylelint (
stylelint.vscode-stylelint) - ESLint (
dbaeumer.vscode-eslint) - Markdownlint (
davidanson.vscode-markdownlint) - YAML (Red Hat) (
redhat.vscode-yaml) - EditorConfig for VS Code (
EditorConfig.EditorConfig)
Configuración recomendada de VS Code (Usuario o Espacio de trabajo):
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": true,
"source.fixAll.eslint": true,
"source.fixAll.stylelint": true
},
"yaml.validate": true,
"markdownlint.config": {
"default": true,
"MD013": false
}
}
Archivos opcionales de la raíz del proyecto (crear una vez):
# .editorconfig
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
// .prettierrc
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5"
}
# .prettierignore
node_modules/
dist/
build/
.cache/
Con esto, Prettier manejará el formateo para HTML, CSS, JS/TS, JSON, YAML y Markdown. Las extensiones linter mostrarán problemas directamente en el panel de Problemas.
B) Configuración Node (CLI + scripts)
Inicializar un proyecto e instalar formateadores/linters. Esta ruta es ideal para automatización, CI y flujos de trabajo en equipo.
npm init -y
npm i -D prettier eslint htmlhint stylelint markdownlint-cli
Archivos de configuración esenciales (copia estos a la raíz de tu proyecto):
// .prettierrc
{
"semi": true,
"singleQuote": true,
"tabWidth": 2
}
// .eslintrc.json
{
"env": { "browser": true, "es2021": true },
"extends": "eslint:recommended",
"rules": { "semi": ["error", "always"] }
}
// .htmlhintrc
{
"tagname-lowercase": true,
"attr-lowercase": true,
"doctype-first": true,
"id-unique": true
}
Añade estos scripts a package.json:
{
"scripts": {
"format": "prettier --write .",
"lint": "htmlhint '**/*.html' && eslint '**/*.js' && stylelint '**/*.css'"
}
}
Prueba tu configuración:
npm run format
npm run lint
Prettier para HTML, CSS, JS, JSON, YAML, Markdown
Prettier soporta todos estos formatos de forma nativa. Usa la extensión de VS Code (Format on Save) o la CLI:
npx prettier --write "**/*.{html,css,js,ts,json,yml,yaml,md,markdown}"
Preguntas Críticas de Codificación (Atelier)
Usa estas para reflexionar sobre por qué formateamos y hacemos linting – no solo cómo.
- Exploración: ¿Qué problemas solucionaron el auto-formateo y linting en tu código hoy? ¿Cuáles te sorprendieron?
- Reflexión: Prettier tiene opiniones. ¿Quién establece esas opiniones? ¿Cuándo es apropiado anular una regla y por qué?
- Conceptualización: ¿Cómo el formateo y linting moldean la colaboración y autoría en un equipo? ¿Qué valores codifican estas herramientas (ej., consistencia sobre estilo personal)?
- Producción: Documenta tus reglas elegidas (.prettierrc, linters). ¿Qué compensaciones hiciste (ej., longitud de línea, estilo de comillas)?
- Exhibición: Antes de publicar, ejecuta
npm run format:check && npm run lint. ¿Qué problemas quedan y qué priorizarías corregir para tu audiencia?
Secuenciación Sugerida para Estudiantes
- Comienza con la Ruta A (extensiones de VS Code) para resultados inmediatos
- Muévete a la Ruta B (Node.js) cuando necesites automatización o flujos de trabajo en equipo
- Mantén las configuraciones simples - comienza con valores por defecto, personaliza solo cuando sea necesario
- Enfócate en una herramienta a la vez - no trates de configurar todo de una vez
Referencias
- Prettier:
https://prettier.io/ - ESLint:
https://eslint.org/ - Stylelint:
https://stylelint.io/ - HTMLHint:
https://htmlhint.com/ - markdownlint:
https://github.com/DavidAnson/markdownlint - YAML (Red Hat extension):
https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml