Linting-Konfiguration

Ich sehe einen erheblichen Unterschied in der Standard-Linting-Konfiguration und der Art und Weise, wie sie funktionieren soll.

Die Standardkonfiguration installiert das Paket eslint-config-discourse als Abhängigkeit für die Entwicklung:
https://www.npmjs.com/package/eslint-config-discourse

Wenn ich jedoch nach dem Quellcode unter https://github.com/discourse/eslint-config-discourse suche, wird das Repository zu @discourse/lint-configs weitergeleitet; was ebenfalls ein Paket unter dem Monorepo eslint-config-discourse ist. Mit den enthaltenen Tests soll eslint-config-discourse ein Wrapper sein, aber meiner Erfahrung nach funktioniert es nicht wie erwartet:

Standard-Linting-Konfiguration

  1. Erstellen Sie ein neues Thema mit dem Befehl discourse_theme new.
  2. Überprüfen Sie die generierte Linting-Konfiguration:
    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. Führen Sie Prettier auf dem Paket aus, und es wird sich über die .gjs-Dateien beschweren:
    yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"
    
    Error: No parser could be inferred for file ... .gjs

Konfigurieren Sie @discourse/lint-configs direkt

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

  1. Führen Sie yarn remove -D eslint-config-discourse aus, um das Paket zu deinstallieren.
  2. Führen Sie yarn add -D @discourse/lint-configs aus, um es als Entwicklungsabhängigkeit zu installieren.
  3. Befolgen Sie die Anweisungen, um Linting-Konfigurationsdateien zu erstellen:
    a. Ersetzen Sie die .eslintrc-Datei durch .eslintrc.cjs
    module.exports = require("@discourse/lint-configs/eslint-theme");
    
    b. Fügen Sie die Datei .prettierrc.cjs hinzu:
    module.exports = require("@discourse/lint-configs/prettier");
    
    c. Ersetzen Sie die .template-lintrc.js-Datei durch .template-lintrc.cjs:
    module.exports = require("@discourse/lint-configs/template-lint");
    
  4. Versuchen Sie erneut, Prettier auszuführen, und stellen Sie fest, dass es ohne Fehler funktioniert:
    $ 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.
    

Soll ich also davon ausgehen, dass die discourse_theme-CLI veraltet ist und ich in Zukunft die Option @discourse/lint-configs in meinen Projekten verwenden sollte?

Nein. Vertrau dem. Reiche es in dein Repository ein und sieh dir die Linting-Befehle an, wenn deine fehlschlägt.

1 „Gefällt mir“

Hallo @pfaffman,

Ich habe einen kleinen Test in meinem Repository durchgeführt. Während beide Fälle die Fertigstellung bestehen, erzeugt die Standardkonfiguration einen Fehler für die GJS-Datei, und sie wird nicht gescannt.

Beim zweiten Ansatz wird die GJS-Datei erkannt und erfolgreich gelintet.

Bitte vergleiche die Aktionen des main-Branches mit den Aktionen des linting-Branches; ich habe die Konfigurationen der zweiten Option nur im linting-Branch eingeführt:

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

Das sollte sie nicht. Die neueste Version der discourse_theme CLI klont GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes und passt sie basierend auf Ihren Eingaben an. Diese verwendet @discourse/lint-configs

Die Anweisungen zum Aktualisieren finden Sie hier:

4 „Gefällt mir“

Danke, das war’s. Jetzt kann ich eine Version bekommen (vorher habe ich keine Version bekommen):

discourse_theme --version
2.1.2

…und eine aktualisierte Befehlsliste:

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

Commands:
  new DIR               - Erstellt ein neues Theme im angegebenen Verzeichnis.
  download DIR          - Lädt ein Theme vom Server herunter und speichert es im angegebenen Verzeichnis.
  upload DIR            - Lädt das Theme aus dem angegebenen Verzeichnis nach Discourse hoch.
  watch DIR             - Überwacht das Theme im angegebenen Verzeichnis und synchronisiert alle Änderungen mit Discourse.
  rspec DIR [OPTIONS]   - Führt die RSpec-Tests im angegebenen Verzeichnis aus. Die Tests können mit einem lokalen Discourse-Repository oder einem Docker-Container ausgeführt werden.
    --headful           - Führt die RSpec-Systemtyp-Tests im Headful-Modus aus. Gilt für beide Modi.

    Wenn das angegebene Verzeichnis für die Ausführung in einem Docker-Container konfiguriert wurde, werden die zusätzlichen Optionen unterstützt.
    --rebuild           - Erzwingt einen Neuaufbau des Docker-Containers.
    --verbose           - Führt den Befehl zur Vorbereitung des Docker-Containers im ausführlichen Modus aus.

Global Options:
  --reset               - Setzt die Konfiguration für das angegebene Verzeichnis zurück.

und natürlich ist das generierte Skelett neuer. :smiley:

5 „Gefällt mir“

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