Configuración de linting

Estoy viendo una diferencia significativa en la configuración de linting predeterminada y en cómo se supone que funciona.

La configuración predeterminada instala el paquete eslint-config-discourse como una dependencia de desarrollo:
https://www.npmjs.com/package/eslint-config-discourse

Sin embargo, cuando busco el código fuente en https://github.com/discourse/eslint-config-discourse, el repositorio se redirige a @discourse/lint-configs, que también es un paquete dentro del monorepo de eslint-config-discourse. Con las pruebas incluidas, eslint-config-discourse se supone que es un envoltorio, creo, pero no está funcionando como se supone que debe ser, al menos no en mi experiencia:

Configuración de Linting Predeterminada

  1. Crea un nuevo tema usando el comando discourse_theme new.
  2. Revisa la configuración de linting generada:
    a. .eslintrc
    {
      "extends": "eslint-config-discourse",
      "globals": {
        "settings": "readonly",
        "themePrefix": "readonly"
      }
    }
    
    b. .template-lintrc.js:
    module.exports = {
      plugins: ["ember-template-lint-plugin-discourse"],
      extends: "discourse:recommended",
    };
    
    c. package.json
    {
      "license": "MIT",
      "devDependencies": {
        "eslint-config-discourse": "latest"
      }
    }
    
  3. Ejecuta Prettier en el paquete y se quejará de los archivos *.gjs:
    yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"
    
    Error: No parser could be inferred for file ... .gjs

Configura @discourse/lint-configs directamente

https://www.npmjs.com/package/@discourse/lint-configs

  1. Ejecuta yarn remove -D eslint-config-discourse para desinstalar el paquete.
  2. Ejecuta yarn add -D @discourse/lint-configs para instalar como dependencia de desarrollo.
  3. Sigue las instrucciones para crear los archivos de configuración de linting:
    a. Reemplaza el archivo .eslintrc con .eslintrc.cjs
    module.exports = require("@discourse/lint-configs/eslint-theme");
    
    b. Agrega el archivo .prettierrc.cjs:
    module.exports = require("@discourse/lint-configs/prettier");
    
    c. Reemplaza el archivo .template-lintrc.js con .template-lintrc.cjs:
    module.exports = require("@discourse/lint-configs/template-lint");
    
  4. Intenta ejecutar Prettier de nuevo y observa que funciona sin errores:
    $ yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"
    Checking formatting...
    All matched files use Prettier code style!
    ✨  Done in 0.46s.
    

Entonces, ¿debo asumir que la CLI discourse_theme está desactualizada y que, en el futuro, debería usar la opción @discourse/lint-configs en mis proyectos?

No. Confía en eso. Envía a tu repositorio y ve los comandos de linting cuando el tuyo no pase.

1 me gusta

Hola @pfaffman,

Hice una pequeña prueba en mi repositorio. Si bien ambos casos pasan la finalización, la configuración predeterminada genera un error para el archivo GJS y no se escanea.

En el segundo enfoque, el archivo GJS se reconoce y se analiza correctamente.

Por favor, compara las acciones de la rama main con las acciones de la rama linting; solo introduje las configuraciones de la segunda opción en la rama linting:

main:
https://github.com/gormus/discourse-filtered-topic-lists/actions/runs/10325377606/job/28586838134?pr=1#step:6:19

linting:
https://github.com/gormus/discourse-filtered-topic-lists/actions/runs/10333473217/job/28605865585?pr=3#step:6:17

No debería. La última versión de la CLI de discourse_theme clonará GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes y la adaptará según sus entradas. Eso utiliza @discourse/lint-configs

Las instrucciones de actualización están aquí:

4 Me gusta

Gracias, esto era. Ahora puedo obtener una versión (anteriormente no obtenía versión):

discourse_theme --version
2.1.2

…y una lista de comandos actualizada:

discourse_theme --help
Usage: discourse_theme COMMAND [DIR] [OPTIONS]

Commands:
  new DIR               - Crea un nuevo tema en el directorio especificado.
  download DIR          - Descarga un tema del servidor y lo almacena en el directorio especificado.
  upload DIR            - Sube el tema del directorio especificado a Discourse.
  watch DIR             - Observa el tema en el directorio especificado y sincroniza cualquier cambio con Discourse.
  rspec DIR [OPTIONS]   - Ejecuta las pruebas RSpec en el directorio especificado. Las pruebas se pueden ejecutar utilizando un repositorio local de Discourse o un contenedor Docker.
    --headful           - Ejecuta las pruebas de tipo de sistema RSpec en modo headful. Se aplica a ambos modos.

    Si el directorio especificado ha sido configurado para ejecutarse en un contenedor Docker, se admiten las opciones adicionales.
    --rebuild           - Fuerza la reconstrucción del contenedor Docker.
    --verbose           - Ejecuta el comando para preparar el contenedor Docker en modo verboso.

Global Options:
  --reset               - Restablece la configuración para el directorio especificado.

y por supuesto el esqueleto generado es más nuevo. :smiley:

5 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.