Actualización automática de temas y plugins al formato de archivo .gjs

En la última versión de la configuración de linting estándar de Discourse, hemos habilitado la regla require-strict-mode de ember-template-lint. Esto generará un error de linting para cualquier archivo .hbs.

Para resolver las advertencias, debes convertir todas las plantillas de tus componentes, rutas y conectores a archivos .gjs. Para facilitar esto, hemos creado discourse-gjs-codemod, que se basa en el @embroider/template-tag-codemod de Ember.

Para usar el codemod, primero asegúrate de que tus dependencias de linting estén actualizadas copiando el último package.json del esqueleto del plugin o del esqueleto del tema. Luego, ejecuta eslint y prettier:

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

Si algún problema no pudo ser corregido automáticamente, resuélvelo manualmente ahora. No ejecutes ember-template-lint todavía; se espera que falle.

Ahora ejecuta el codemod usando este comando:

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

Si hay algún problema que no se pueda resolver automáticamente, se imprimirá información en la terminal. Una vez que hayas resuelto el problema, ejecuta el codemod nuevamente.

Para obtener más información sobre el formato de archivo .gjs, consulta la guía oficial:

9 Me gusta

¿Pide una contraseña?

 *) 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 no funciona. ¿Quizás todavía es privado?

4 Me gusta

:facepalm:
Tienes razón, era privado. Ya está desbloqueado:

5 Me gusta

¡Eso marcó una gran diferencia! Sucedieron un montón de cosas.

Me alegro de que no sea el único al que le pasa. :rofl:

Si quieres eliminar estos tres mensajes, nadie se enterará. :slight_smile:

Puedo moverlos a un nuevo tema, pero no eliminarlos. . .

5 Me gusta

¿Qué tal esto?

                                                                                                                                                           [107/859]
 WARN  Se encontraron problemas con las dependencias entre pares
.
├─┬ ember-auto-import 2.10.0
│ ├─┬ babel-loader 8.4.1
│ │ └── ✕ falta el par webpack@">=2"
│ ├─┬ css-loader 5.2.7
│ │ └── ✕ falta el par webpack@"^4.27.0 || ^5.0.0"
│ ├─┬ style-loader 2.0.0
│ │ └── ✕ falta el par webpack@"^4.0.0 || ^5.0.0"
│ └─┬ mini-css-extract-plugin 2.9.2
│   └── ✕ falta el par webpack@^5.0.0
└─┬ ember-source 5.12.0
  ├── ✕ falta el par @glimmer/component@^1.1.2
  └─┬ ember-auto-import 2.10.0
    └── ✕ falta el par webpack@^5.0.0
Dependencias entre pares que deberían instalarse:
  @glimmer/component@^1.1.2   webpack@">=5.0.0 <6.0.0-0"


Hecho en 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: El comando falló con el código de salida 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'

Pero parece que convirtió todas menos un par de las plantillas, y aunque todavía no entiendo por qué, no me sorprende, ya que tienen algunas cosas raras y estaba en el proceso de reescribirlas de todos modos.

1 me gusta

Creo que el mensaje de peerdependency es probablemente solo una advertencia que se puede ignorar para los propósitos del codemod.

No estoy seguro sobre el otro error. ¿Hay algo más útil más arriba en el registro? ¿Es este un tema/plugin público que podrías compartir?

Sí. Creo que todos los errores son espurios. Solo un par de cosas no se convirtieron. No estoy seguro de por qué, pero como dije, de todas formas planeaba reescribirlos.

Creo que fueron una docena o más los que logró reescribir, ¡así que es un milagro absoluto!

Pronto lo probaré con otras cosas que sean públicas.

¡Gracias!

1 me gusta