Aggiornamento automatico di temi e plugin al formato file .gjs

Nell’ultima versione della configurazione di linting standard di Discourse, abbiamo abilitato la regola require-strict-mode di ember-template-lint. Questo genererà un errore di linting per qualsiasi file .hbs.

Per risolvere gli avvisi, dovresti convertire tutti i tuoi template di componenti, route e connettori in file .gjs. Per semplificare questa operazione, abbiamo creato discourse-gjs-codemod, che si basa su @embroider/template-tag-codemod di Ember.

Per utilizzare il codemod, assicurati innanzitutto che le tue dipendenze di linting siano aggiornate copiando l’ultimo package.json da plugin skeleton o theme skeleton. Quindi, esegui eslint e prettier:

pnpm i
pnpm eslint --fix .
pnpm prettier --write "**/*.{gjs,js,hbs,scss}"

Se ci sono problemi che non possono essere corretti automaticamente, risolvili manualmente ora. Non eseguire ancora ember-template-lint: ci si aspetta che fallisca.

Ora esegui il codemod utilizzando questo comando:

pnpm dlx https://github.com/discourse/discourse-gjs-codemod

Se ci sono problemi che non possono essere risolti automaticamente, verranno stampate informazioni nel terminale. Una volta risolto il problema, esegui nuovamente il codemod.

Per ulteriori informazioni sul formato dei file .gjs, consulta la guida ufficiale:

9 Mi Piace

Richiede una password?

 *) pfaffman@noreno:~/src/pfaffman/discourse-pfaffmanager$ pnpm dlx https://github.com/discourse/discourse-gjs-codemod
Username for 'https://github.com': pfaffman
Password for 'https://pfaffman@github.com':
/home/pfaffman/.cache/pnpm/dlx/txqdpi2aznswmhsvgh3pgqp3te/1971d72469d-323788:
 ERROR  Command failed with exit code 128: git ls-remote git+ssh://git@github.com/discourse/discourse-gjs-codemod.git HEAD
ERROR: Repository not found.
fatal: Could not read from remote repository.

https://github.com/discourse/discourse-gjs-codemods non funziona. Forse è ancora privato?

4 Mi Piace

:facepalm:
Hai ragione, era privato. Ora è sbloccato:

5 Mi Piace

Ha fatto una differenza enorme! Sono successe un sacco di cose.

Sono così felice che non succeda solo a me. :rofl:

Se vuoi cancellare questi tre messaggi, nessuno lo saprà. :slight_smile:

Posso spostarli in un nuovo argomento, ma non cancellarli. . .

5 Mi Piace

Che ne dici di questo?

                                                                                                                                                           [107/859]
 WARN  Trovati problemi con le dipendenze peer
.
├─┬ ember-auto-import 2.10.0
│ ├─┬ babel-loader 8.4.1
│ │ └── ✕ missing peer webpack@">=2
│ ├─┬ css-loader 5.2.7
│ │ └── ✕ missing peer webpack@"^4.27.0 || ^5.0.0"
│ ├─┬ style-loader 2.0.0
│ │ └── ✕ missing peer webpack@"^4.0.0 || ^5.0.0"
│ └─┬ mini-css-extract-plugin 2.9.2
│   └── ✕ missing peer webpack@^5.0.0
└─┬ ember-source 5.12.0
  ├── ✕ missing peer @glimmer/component@^1.1.2
  └─┬ ember-auto-import 2.10.0
    └── ✕ missing peer webpack@^5.0.0
Peer dependencies that should be installed:
  @glimmer/component@^1.1.2   webpack@">=5.0.0 <6.0.0-0"


Completato in 1.6s usando pnpm v9.15.9
file:///home/pfaffman/.cache/pnpm/dlx/txqdpi2aznswmhsvgh3pgqp3te/1971d8d4970-32e7a4/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/return/final-error.js:6
        return new ErrorClass(message, options);
               ^

ExecaError: Il comando non è riuscito con codice di uscita 255: '/home/pfaffman/.cache/pnpm/dlx/txqdpi2aznswmhsvgh3pgqp3te/1971d8d4970-32e7a4/node_modules/.pnpm/@embroider+template-
tag-codemod@1.2.1-unstable.ce3535d_@glimmer+component@2.0.0_handlebars@4._arnanpbg4hbtumvl4wyacggoiu/node_modules/@embroider/template-tag-codemod/dist/src/cli.js' '
--relativeLocalPaths=false' '--nativeRouteTemplates=false' '--nativeLexicalThis=false' '--templateInsertion=end' --addNameToTemplateOnly '--customResolver=/home/pfa
ffman/.cache/pnpm/dlx/txqdpi2aznswmhsvgh3pgqp3te/1971d8d4970-32e7a4/node_modules/.pnpm/discourse-gjs-codemod@https+++codeload.github.com+discourse+discourse-gjs-cod
emod+tar.gz+a4bc_2dxbzd2itovnk6l7sa4geot32y/node_modules/discourse-gjs-codemod/custom-resolver.js' '--renamingRules=/home/pfaffman/.cache/pnpm/dlx/txqdpi2aznswmhsvg
h3pgqp3te/1971d8d4970-32e7a4/node_modules/.pnpm/discourse-gjs-codemod@https+++codeload.github.com+discourse+discourse-gjs-codemod+tar.gz+a4bc_2dxbzd2itovnk6l7sa4geo
t32y/node_modules/discourse-gjs-codemod/rules.js' '--renderTests=test/**/*.js' '--routeTemplates=**/templates/**/*.hbs' '--components=**/components/**/*.hbs'

Ma sembra che abbia convertito tutti tranne un paio di template e, anche se non capisco ancora perché, non sono sorpreso, dato che hanno delle cose strane al loro interno ed ero comunque in procinto di riscriverli.

1 Mi Piace

Penso che il messaggio di peerdependency sia probabilmente solo un avviso che può essere ignorato ai fini del codemod.

Non sono sicuro riguardo all’altro errore. C’è qualcosa di più utile più in alto nel log? È un tema/plugin pubblico che potresti condividere?

Sì. Penso che gli errori siano tutti spurii. Solo un paio di cose non sono state convertite. Non sono sicuro del perché, ma come ho detto, avevo comunque intenzione di riscriverle.

Penso che siano state una dozzina o più quelle che è riuscito a riscrivere, quindi è un miracolo assoluto!

Proverò presto su altro materiale pubblico.

Grazie!

1 Mi Piace