67 lines
2.8 KiB
Markdown
67 lines
2.8 KiB
Markdown
|
|
# Formato y espaciado del código
|
||
|
|
|
||
|
|
Biome mantiene el formato general, la organización de imports y las reglas de calidad existentes. ESLint Stylistic complementa únicamente el espaciado vertical que Biome no inserta automáticamente. Las versiones están fijadas en package.json y pnpm-lock.yaml; el parser de TypeScript permite analizar TS, TSX y las sobrecargas sin añadir reglas de análisis duplicadas.
|
||
|
|
|
||
|
|
## Configuración
|
||
|
|
|
||
|
|
`.lintrc` es un JSON con las reglas de espaciado. No es un nombre de configuración que Biome o ESLint detecten por sí mismos: `eslint.config.mjs` lo carga y registra el plugin y el parser. Para ajustar la política, editar las reglas de `.lintrc`.
|
||
|
|
|
||
|
|
- Una línea vacía antes y después de funciones, clases, interfaces, tipos, enums y declaraciones exportadas.
|
||
|
|
- Separación entre funciones declaradas mediante variables, incluidas funciones flecha.
|
||
|
|
- Una línea vacía entre métodos de clase, constructor y accesores, y entre un grupo de propiedades y un método.
|
||
|
|
- Las propiedades de clase pueden seguir agrupadas sin líneas vacías individuales.
|
||
|
|
- Las firmas consecutivas de sobrecarga y su implementación se mantienen juntas.
|
||
|
|
- Separación al terminar un grupo de variables y antes de return cuando existe una instrucción previa.
|
||
|
|
- Como máximo una línea vacía consecutiva. Biome mantiene sus agrupaciones de imports.
|
||
|
|
|
||
|
|
El código de terceros de `packages/shadcn-ui`, los directorios generados, dependencias y declaraciones `.d.ts` quedan fuera del espaciado. La biblioteca vendor también queda excluida de Biome para respetar AGENTS.md.
|
||
|
|
|
||
|
|
## Comandos
|
||
|
|
|
||
|
|
```bash
|
||
|
|
pnpm format # Biome y después espaciado vertical, en todo el código propio
|
||
|
|
pnpm format:biome # Solo el formateador de Biome
|
||
|
|
pnpm format:spacing # Aplicar únicamente el espaciado vertical
|
||
|
|
pnpm lint:spacing # Comprobar espaciado sin modificar archivos
|
||
|
|
pnpm test:spacing # Validar las reglas, la sintaxis y la compatibilidad con Biome
|
||
|
|
```
|
||
|
|
|
||
|
|
También se puede actuar sobre un archivo concreto:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
pnpm exec eslint modules/assets/src/api/domain/asset.aggregate.ts --fix
|
||
|
|
```
|
||
|
|
|
||
|
|
La incorporación de las reglas no reformatea automáticamente todo el código existente: `pnpm format:spacing` realiza esa adaptación cuando se ejecute. Los comandos habituales `lint` y `check` siguen siendo los de Biome; `lint:spacing` comprueba la política complementaria de forma explícita.
|
||
|
|
|
||
|
|
## Ejemplo
|
||
|
|
|
||
|
|
```ts
|
||
|
|
class Service {
|
||
|
|
private enabled = true;
|
||
|
|
private name = "Metis Desk";
|
||
|
|
|
||
|
|
constructor() {}
|
||
|
|
|
||
|
|
first() {
|
||
|
|
const name = this.name;
|
||
|
|
|
||
|
|
return name;
|
||
|
|
}
|
||
|
|
|
||
|
|
second() {
|
||
|
|
return this.enabled;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function first() {
|
||
|
|
return 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
function second() {
|
||
|
|
return 2;
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Fuentes de las reglas: [separación entre declaraciones](https://eslint.style/rules/padding-line-between-statements) y [separación entre miembros de clase](https://eslint.style/rules/lines-between-class-members).
|