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.
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:
*) 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.
[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.
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.