Repository navigation
formato del codigo
Esta página explica cómo se mantiene el estilo del código en el repositorio (comillas simples y sin punto y coma) con tres herramientas: Prettier, el formateo al guardar de VS Code y ESLint. Es una receta para configurar tu computadora y para repetir la configuración en un proyecto nuevo; no hace falta leerla para seguir la guía de estudio.
La convención del repositorio es comillas simples y sin punto y coma. Para que se cumpla sola al grabar un archivo, se combinan tres piezas:
| Pieza | Para qué sirve |
|---|---|
| Prettier | Reescribe el archivo con el estilo acordado |
| Formatear al guardar (VS Code) | Ejecuta Prettier cada vez que se graba |
| ESLint |
Avisa de lo que no cumple (subrayado y npm run lint), pero no reformatea |
Hay un solo .prettierrc en la raíz del repositorio:
{
"printWidth": 100,
"singleQuote": true,
"semi": false,
"endOfLine": "auto",
"overrides": [
{ "files": "*.html", "options": { "parser": "angular" } }
]
}Prettier busca la configuración subiendo desde el archivo y usa la primera que
encuentra: no mezcla la de la raíz con la del proyecto. Por eso los proyectos
no tienen .prettierrc propio (se quitaron los tres, que eran idénticos). Para
comprobar qué configuración usa un archivo, dentro del proyecto:
npx prettier --find-config-path src/app/app.ts
# ../.prettierrcSe crea un .prettierrc dentro de la carpeta del proyecto. Como reemplaza
al de la raíz por completo, hay que repetir todas las opciones:
{
"printWidth": 120,
"singleQuote": true,
"semi": true,
"endOfLine": "auto",
"overrides": [
{ "files": "*.html", "options": { "parser": "angular" } }
]
}Para volver al estilo del repositorio, se borra ese archivo.
- Instalar la extensión Prettier - Code formatter (
esbenp.prettier-vscode). - Agregar a la configuración de la carpeta que abres (
.vscode/settings.json):
{
"prettier.requireConfig": true,
"[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true },
"[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true },
"[scss]": { "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true }
}-
prettier.requireConfighace que sólo formatee cuando hay un.prettierrc. - Se activa por lenguaje a propósito: con un
formatOnSaveglobal también se reformatearían los.mdy los.json. -
.vscode/está ignorado por git en todo el repositorio, así que esta configuración es local de cada computadora: hay que repetirla en cada una. - El
.cssqueda fuera: Prettier cambiaría las comillas de@import "tailwindcss"y reorganizaría la listathemesde daisyUI ensrc/tailwind.css.
En 02-bases, 03-gifs-app y 04-country-app:
| Script | Qué hace |
|---|---|
npm run format |
Reescribe los .ts, .html y .scss de src/ con Prettier |
npm run format:check |
Sólo lista los archivos que no cumplen (no escribe). Sirve en CI o antes de un commit |
"scripts": {
"format": "prettier --write \"src/**/*.{ts,html,scss}\"",
"format:check": "prettier --check \"src/**/*.{ts,html,scss}\""
}Hoy está en 04-country-app. Para repetirlo en otro proyecto (a nivel de
proyecto, porque el repositorio no tiene un package.json raíz):
npm install -D eslint typescript-eslint @stylistic/eslint-plugin// eslint.config.mjs
import { defineConfig, globalIgnores } from 'eslint/config'
import stylistic from '@stylistic/eslint-plugin'
import tseslint from 'typescript-eslint'
export default defineConfig([
globalIgnores(['dist/', '.angular/', 'node_modules/', 'coverage/']),
{
files: ['**/*.ts'],
languageOptions: { parser: tseslint.parser },
plugins: { '@stylistic': stylistic },
rules: {
'@stylistic/semi': ['error', 'never'],
},
},
])"scripts": {
"lint": "eslint \"src/**/*.ts\"",
"lint:fix": "eslint \"src/**/*.ts\" --fix"
}npm run lint marca cada ; sobrante como Extra semicolon, y lint:fix los
quita. Con la extensión ESLint (dbaeumer.vscode-eslint) aparecen
subrayados en el editor.
-
endOfLine: "auto": en Windows, concore.autocrlf=true, git deja los archivos con final de línea CRLF en el disco. Prettier exige LF por defecto y daría por mal formateado un archivo que está bien. Conautorespeta el final de línea que ya tiene cada archivo yformat:checksólo marca lo que de verdad no cumple. Un.prettierrcde proyecto debe repetir esta opción, porque reemplaza al de la raíz por completo. -
Primera pasada: el código que genera
ng newtrae punto y coma, así que el primernpm run formatcambia muchos archivos. Conviene hacerlo en un commit aparte, para no mezclarlo con cambios de verdad. -
Excepción que Prettier respeta: sin punto y coma, una línea que empieza por
(,[o una plantilla literal (con comillas invertidas) puede confundirse con la anterior. En ese caso Prettier agrega un;al principio de la línea. -
Prettier y ESLint hacen cosas distintas: Prettier arregla; ESLint avisa. Sirven juntos: ESLint hace visible la regla aunque alguien guarde sin la extensión.