Configuration de linting

Je constate une différence significative dans la configuration de linting par défaut et la manière dont elle est censée fonctionner.

La configuration par défaut installe le package eslint-config-discourse en tant que dépendance de développement :
https://www.npmjs.com/package/eslint-config-discourse

Cependant, lorsque je recherche le code source sur https://github.com/discourse/eslint-config-discourse, le dépôt redirige vers @discourse/lint-configs, qui est également un package sous le monorepo eslint-config-discourse. Avec les tests inclus, eslint-config-discourse est censé être un wrapper, je pense, mais il ne fonctionne pas comme il le devrait, du moins pas d’après mon expérience :

Configuration de Linting par Défaut

  1. Créez un nouveau thème en utilisant la commande discourse_theme new.
  2. Examinez la configuration de linting générée :
    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. Exécutez Prettier sur le package, et il se plaindra des fichiers *.gjs :
    yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"
    
    Error: No parser could be inferred for file ... .gjs

Configurer @discourse/lint-configs directement

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

  1. Exécutez yarn remove -D eslint-config-discourse pour désinstaller le package.
  2. Exécutez yarn add -D @discourse/lint-configs pour l’installer en tant que dépendance de développement.
  3. Suivez les instructions pour créer les fichiers de configuration de linting :
    a. Remplacez le fichier .eslintrc par .eslintrc.cjs
    module.exports = require("@discourse/lint-configs/eslint-theme");
    
    b. Ajoutez le fichier .prettierrc.cjs :
    module.exports = require("@discourse/lint-configs/prettier");
    
    c. Remplacez le fichier .template-lintrc.js par .template-lintrc.cjs :
    module.exports = require("@discourse/lint-configs/template-lint");
    
  4. Essayez d’exécuter à nouveau Prettier et observez qu’il fonctionne sans erreur :
    $ 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.
    

Alors, dois-je présumer que l’outil CLI discourse_theme est obsolète et qu’à l’avenir, je devrais utiliser l’option @discourse/lint-configs dans mes projets ?

Non. Faites-lui confiance. Soumettez-le à votre dépôt et voyez les commandes de linting lorsque la vôtre échoue.

1 « J'aime »

Salut @pfaffman,

J’ai fait un petit test sur mon dépôt. Bien que les deux cas réussissent la complétion, la configuration par défaut génère une erreur pour le fichier GJS, et il n’est pas analysé.

Avec la deuxième approche, le fichier GJS est reconnu et correctement linté.

Veuillez comparer les actions de la branche main avec les actions de la branche linting ; j’ai seulement introduit les configurations de la deuxième option dans la branche linting :

main :

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

linting :

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

Ce ne devrait pas être le cas. La dernière version de la CLI discourse_theme clonera GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes et l’adaptera en fonction de vos entrées. Celle-ci utilise @discourse/lint-configs.

Les instructions de mise à jour sont ici :

4 « J'aime »

Merci, c’était ça. Maintenant, je peux obtenir une version (auparavant, je n’obtenais pas de version) :

discourse_theme --version
2.1.2

… et une liste de commandes mise à jour :

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

Commands:
  new DIR               - Crée un nouveau thème dans le répertoire spécifié.
  download DIR          - Télécharge un thème du serveur et le stocke dans le répertoire spécifié.
  upload DIR            - Télécharge le thème du répertoire spécifié vers Discourse.
  watch DIR             - Surveille le thème dans le répertoire spécifié et synchronise toutes les modifications avec Discourse.
  rspec DIR [OPTIONS]   - Exécute les tests RSpec dans le répertoire spécifié. Les tests peuvent être exécutés à l'aide d'un dépôt Discourse local ou d'un conteneur Docker.
    --headful           - Exécute les tests de type système RSpec en mode headful. S'applique aux deux modes.

    Si le répertoire spécifié a été configuré pour s'exécuter dans un conteneur Docker, les options supplémentaires sont prises en charge.
    --rebuild           - Force la reconstruction du conteneur Docker.
    --verbose           - Exécute la commande pour préparer le conteneur Docker en mode verbeux.

Global Options:
  --reset               - Réinitialise la configuration du répertoire spécifié.

et bien sûr, le squelette généré est plus récent. :smiley:

5 « J'aime »

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