Automatisches Aktualisieren von Themes und Plugins auf das .gjs-Dateiformat

In der neuesten Version der Standard-Linting-Konfiguration von Discourse haben wir die require-strict-mode-Regel von ember-template-lint aktiviert. Dies führt zu einem Linting-Fehler für alle .hbs-Dateien.

Um die Warnungen zu beheben, sollten Sie alle Ihre Komponenten-, Routen- und Connector-Vorlagen in .gjs-Dateien konvertieren. Um dies zu erleichtern, haben wir den discourse-gjs-codemod entwickelt, der auf dem @embroider/template-tag-codemod von Ember aufbaut.

Um den Codemod zu verwenden, stellen Sie zunächst sicher, dass Ihre Linting-Abhängigkeiten auf dem neuesten Stand sind, indem Sie die neueste package.json aus dem Plugin-Skeleton oder dem Theme-Skeleton kopieren. Führen Sie dann eslint und prettier aus:

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

Wenn Probleme nicht automatisch behoben werden konnten, beheben Sie diese jetzt manuell. Führen Sie ember-template-lint noch nicht aus – es wird erwartet, dass dies fehlschlägt.

Führen Sie nun den Codemod mit diesem Befehl aus:

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

Wenn es Probleme gibt, die nicht automatisch behoben werden können, werden Informationen im Terminal ausgegeben. Sobald Sie das Problem behoben haben, führen Sie den Codemod erneut aus.

Weitere Informationen zum .gjs-Dateiformat finden Sie im offiziellen Leitfaden:

9 „Gefällt mir“

Es verlangt ein Passwort?

 *) 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 funktioniert nicht. Vielleicht ist es noch privat?

4 „Gefällt mir“

:facepalm:
Du hast recht, es war privat. Es ist jetzt entsperrt:

5 „Gefällt mir“

Das hat einen sehr großen Unterschied gemacht! Es ist eine Menge passiert.

Ich bin so froh, dass es nicht nur mir passiert. :rofl:

Wenn du diese drei Nachrichten löschen möchtest, wird es niemand merken. :slight_smile:

Ich kann sie in ein neues Thema verschieben, aber nicht löschen. . .

5 „Gefällt mir“

Was ist damit?

                                                                                                                                                           [107/859]
 WARN  Issues with peer dependencies found
.
├─┬ 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"


Done in 1.6s using 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: Command failed with exit code 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'

Aber es sieht so aus, als ob es alle bis auf ein paar der Templates konvertiert hat, und obwohl ich noch nicht verstehe, warum, bin ich nicht überrascht, da sie einiges an verrücktem Zeug enthalten und ich sowieso gerade dabei war, sie neu zu schreiben.

1 „Gefällt mir“

Ich denke, die Peerdependency-Meldung ist wahrscheinlich nur eine Warnung, die für die Zwecke des Codemods ignoriert werden kann.

Ich bin mir wegen des anderen Fehlers nicht sicher. Gibt es weiter oben im Protokoll etwas Nützlicheres? Ist dies ein öffentliches Theme/Plugin, das Sie teilen könnten?

Ja. Ich denke, die Fehler sind alle falsch. Nur ein paar Dinge wurden nicht konvertiert. Ich bin mir nicht sicher, warum, aber wie gesagt, ich hatte sowieso vor, diese neu zu schreiben.

Ich glaube, es waren ein Dutzend oder mehr, die es geschafft hat, neu zu schreiben, also ist es ein absolutes Wunder!

Ich werde es bald mit anderen öffentlichen Sachen ausprobieren.

Vielen Dank!

1 „Gefällt mir“