Código limpio con Deno: linting y formateo integrados

Deno incluye un linter y formateador integrados, eliminando la necesidad de configurar herramientas adicionales como ESLint y Prettier, comunes en proyectos JavaScript tradicionales.

Un linter es una herramienta de mejora de código que identifica problemas potenciales que, aunque no son errores técnicos, pueden afectar la calidad y organización del código.

El linter puede detectar situaciones como:

  • Módulos importados no utilizados Ejemplo de import no utilizado
  • Variables declaradas pero nunca usadas Ejemplo de variable no utilizada

Estos problemas se indican con una línea ondulada amarilla, y al pasar el cursor sobre ella, se muestran detalles específicos.

#Comandos y configuración

En la mayoría de los casos, resolveremos estos problemas a medida que avanzamos en el desarrollo del proyecto. Sin embargo, podríamos preferir centrarnos en escribir la mayor cantidad de código posible primero y ocuparnos de resolver los problemas de linting más tarde.

Para revisar todo el proyecto en busca de problemas de linting:

deno lint main.ts

La otra herramienta, el formateador, se encarga de los aspectos estéticos de nuestro código. Gestiona cosas como el ancho de las líneas, los puntos y comas, y la elección entre comillas simples o dobles.

Para formatear automáticamente el código y, por ejemplo, ordenar la indentación o la alineación en nuestro código:

deno fmt main.ts

Todas las configuraciones se manejan en el archivo deno.json, centralizando la personalización del proyecto y no necesitaremos otros archivos de configuración en nuestro proyecto.

El linting en Deno se basa en su propio conjunto de reglas, que podemos consultar en el sitio web de Deno. El sitio ofrece explicaciones detalladas para todas sus recomendaciones. En lo que respecta al formato, ofrece opciones simples, como habilitar o deshabilitar los puntos y comas, elegir entre comillas simples o dobles, y más.

deno.ts
{
//...
"lint": {
"rules": {
"tags": ["recommended"],
"include": ["ban-untagged-todo"],
"exclude": ["no-unused-vars"]
}
},
"fmt": {
"useTabs": true,
"lineWidth": 80,
"indentWidth": 4,
"semiColons": true,
"singleQuote": true,
"proseWrap": "preserve"
}
}

Tanto para el linter como para el formateador, podemos incluir o excluir archivos y directorios específicos.

deno.ts
{
//...
"lint": {
+ "include": ["src/"],
+ "exclude": ["src/testdata/", "src/fixtures/**/*.ts"],
"rules": {
"tags": ["recommended"],
"include": ["ban-untagged-todo"],
"exclude": ["no-unused-vars"]
}
},
"fmt": {
"useTabs": true,
"lineWidth": 80,
"indentWidth": 4,
"semiColons": true,
"singleQuote": true,
"proseWrap": "preserve",
+ "include": ["src/"],
+ "exclude": ["src/testdata/", "src/fixtures/**/*.ts"]
}
}

Aunque las configuraciones son altamente personalizables, se recomienda mantener las configuraciones predeterminadas cuando sea posible para mantener la consistencia en el código.