Configurazione di linting

Sto riscontrando una differenza significativa nella configurazione di linting predefinita e nel modo in cui dovrebbe funzionare.

La configurazione predefinita installa il pacchetto eslint-config-discourse come dipendenza di sviluppo:
https://www.npmjs.com/package/eslint-config-discourse

Tuttavia, quando cerco il codice sorgente su https://github.com/discourse/eslint-config-discourse il repository reindirizza a @discourse/lint-configs; che è anche un pacchetto all’interno del monorepo di eslint-config-discourse. Con i test inclusi, eslint-config-discourse dovrebbe essere un wrapper, ma non funziona come dovrebbe, almeno secondo la mia esperienza:

Configurazione di Linting Predefinita

  1. Crea un nuovo tema usando il comando discourse_theme new.
  2. Rivedi la configurazione di linting generata:
    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. Esegui Prettier sul pacchetto, e si lamenterà dei file *.gjs:
    yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"
    
    Errore: Nessun parser è stato in grado di essere dedotto per il file ... .gjs

Configura @discourse/lint-configs direttamente

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

  1. Esegui yarn remove -D eslint-config-discourse per disinstallare il pacchetto.
  2. Esegui yarn add -D @discourse/lint-configs per installarlo come dipendenza di sviluppo
  3. Segui le istruzioni per creare i file di configurazione di linting:
    a. Sostituisci il file .eslintrc con .eslintrc.cjs
    module.exports = require("@discourse/lint-configs/eslint-theme");
    
    b. Aggiungi il file .prettierrc.cjs:
    module.exports = require("@discourse/lint-configs/prettier");
    
    c. Sostituisci il file .template-lintrc.js con .template-lintrc.cjs:
    module.exports = require("@discourse/lint-configs/template-lint");
    
  4. Prova a eseguire nuovamente Prettier e osserva che funziona senza errori:
    $ yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"
    Verifica della formattazione...
    Tutti i file corrispondenti utilizzano lo stile del codice Prettier!
    ✨  Completato in 0.46s.
    

Quindi, dovrei presumere che la CLI discourse_theme sia obsoleta e che in futuro dovrei utilizzare l’opzione @discourse/lint-configs nei miei progetti?

No. Fidati di quello. Invia al tuo repository e vedi i comandi di linting quando il tuo non supera il controllo.

1 Mi Piace

Ciao @pfaffman,

Ho fatto un piccolo test sul mio repository. Mentre entrambi i casi superano il completamento, la configurazione predefinita genera un errore per il file GJS, e questo non viene scansionato.

Con il secondo approccio, il file GJS viene riconosciuto e lintato con successo.

Si prega di confrontare le azioni del branch main con le azioni del branch linting; ho introdotto solo le configurazioni della seconda opzione nel branch 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

Non dovrebbe. L’ultima versione della CLI discourse_theme clonerà GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes e la adatterà in base ai tuoi input. Questa utilizza @discourse/lint-configs

Le istruzioni di aggiornamento sono qui:

4 Mi Piace

Grazie, era questo. Ora posso ottenere una versione (in precedenza non ottenevo la versione):

discourse_theme --version
2.1.2

…e un elenco di comandi aggiornato:

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

Commands:
  new DIR               - Crea un nuovo tema nella directory specificata.
  download DIR          - Scarica un tema dal server e lo memorizza nella directory specificata.
  upload DIR            - Carica il tema dalla directory specificata su Discourse.
  watch DIR             - Monitora il tema nella directory specificata e sincronizza eventuali modifiche con Discourse.
  rspec DIR [OPTIONS]   - Esegue i test RSpec nella directory specificata. I test possono essere eseguiti utilizzando un repository Discourse locale o un container Docker.
    --headful           - Esegue i test di tipo di sistema RSpec in modalità headful. Si applica a entrambe le modalità.

    Se la directory specificata è stata configurata per essere eseguita in un container Docker, sono supportate opzioni aggiuntive.
    --rebuild           - Forza la ricostruzione del container Docker.
    --verbose           - Esegue il comando per preparare il container Docker in modalità verbosa.

Global Options:
  --reset               - Reimposta la configurazione per la directory specificata.

e naturalmente lo scheletro generato è più recente. :smiley:

5 Mi Piace

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