Utiliza Biome en proyectos grandess
Biome puede proporcionar algunas herramientas que pueden ayudarte a utilizarlo correctamente en proyectos grandes, como monorepo o espacios de trabajo que contienen múltiples proyectos.
Utiliza varios archivos de configuración
Section titled Utiliza varios archivos de configuraciónCuando utilizas las funciones de Biome - ya sea con la CLI o con LSP - la herramienta busca el archivo de configuración más cercano utilizando el directorio de trabajo actual.
Si Biome no encuentra allí el archivo de configuración, comienza a caminar hacia arriba por los directorios del sistema de archivos, hasta que encuentra uno.
Puedes aprovechar esta función para aplicar diferentes ajustes en función del proyecto/carpeta.
Supongamos que tenemos un proyecto que contiene una aplicación backend y una nueva aplicación frontend.
- app - backend - biome.json - package.json - frontend - biome.json - legacy-app - package.json - new-app - package.json
Esto significa que cuando ejecutes un script desde el archivo app/backend/package.json
, Biome utilizará el archivo de configuración app/backend/biome.json
.
Cuando ejecutes un script desde app/frontend/legacy-app/package.json
o app/frontend/new-app/package.json
, Biome utilizará el archivo de configuración app/frontend/biome.json
.
Compartir la configuración
Section titled Compartir la configuraciónEs posible utilizar la opción de configuración extends
para desglosar opciones entre archivos.
Supongamos que tenemos estos requisitos:
- El proyecto
legacy-app
tiene que formatear utilizando espacios; - Los proyectos
backend
ynew-app
tienen que formatear usando tabs; - todos los proyectos deben formatear con un ancho de línea de 120;
- El proyecto
backend
necesita hacer algunas verificaciones adicionales;
Comenzamos creando un nuevo archivo de configuración en app/biome.json
, y ponemos allí las opciones compartidas:
{ "formatter": { "enabled": true, "lineWidth": 120 }}
Ahora vamos a mover app/frontend/biome.json
a app/frontend/legacy-app/
, porque ahí es donde tenemos que utilizar un formato diferente.
{ "formatter": { "indentStyle": "space" }}
A continuación, le decimos a Biome que herede todas las opciones del archivo principal app/biome.json
, utilizando la propiedad extends
:
{ "extends": ["../../biome.json"], "formatter": { "indentStyle": "space" }}
Vamos a app/backend/biome.json
, donde tenemos que activar el linting:
{ "extends": ["../biome.json"], "linter": { "enabled": true, "rules": { "recommended": true } }}
Monorepos
Section titled MonoreposLos monorrepositorios son repositorios particulares en los que se almacenan y mantienen múltiples bibliotecas en un gran repositorio. Cada biblioteca representa un proyecto autónomo, que puede contener diferentes configuraciones.
Biome no soporta monorepos muy bien debido a algunas limitaciones en la resolución de archivos de configuración anidados, puedes ayudar y seguir la discusión del fallo.
Para tener la mejor experiencia de desarrollo a pesar de la limitación actual, se recomienda tener un biome.json
en la raíz del monorepo, y utilizar la configuración overrides
para cambiar el comportamiento de Biome en determinados paquetes.
En el siguiente ejemplo desactivamos la regla suspicious/noConsoleLog
dentro del paquete packages/logger
.
{ "linter": { "enabled": true, "rules": { "recommended": true } }, "overrides": [ { "include": ["packages/logger/**"], "linter": { "rules": { "suspicious": { "noConsoleLog": "off" } } } } ]}