Atualizando automaticamente temas e plugins para o formato de arquivo .gjs

Na versão mais recente da configuração de linting padrão do Discourse, habilitamos a regra require-strict-mode do ember-template-lint. Isso gerará um erro de linting para quaisquer arquivos .hbs.

Para resolver os avisos, você deve converter todos os seus templates de componentes, rotas e conectores para arquivos .gjs. Para facilitar isso, criamos o discourse-gjs-codemod, que se baseia no @embroider/template-tag-codemod do Ember.

Para usar o codemod, primeiro certifique-se de que suas dependências de linting estejam atualizadas, copiando o package.json mais recente do plugin skeleton ou do theme skeleton. Em seguida, execute eslint e prettier:

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

Se algum problema não puder ser corrigido automaticamente, resolva-o manualmente agora. Não execute o ember-template-lint ainda - espera-se que ele falhe.

Agora execute o codemod usando este comando:

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

Se houver algum problema que não possa ser resolvido automaticamente, informações serão impressas no terminal. Assim que você resolver o problema, execute o codemod novamente.

Para mais informações sobre o formato de arquivo .gjs, consulte o guia oficial:

9 curtidas

Ele pede uma senha?

 *) 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 não funciona. Talvez ainda esteja privado?

4 curtidas

:facepalm:
Você tem razão, estava privado. Agora está desbloqueado:

5 curtidas

Isso fez uma diferença muito grande! Um monte de coisas aconteceram.

Ainda bem que não sou o único que passa por isso. :rofl:

Se você quiser excluir essas três mensagens, ninguém saberá. :slight_smile:

Posso movê-las para um novo tópico, mas não excluí-las. . .

5 curtidas

E quanto a isso?

                                                                                                                                                           [107/859]
 WARN  Problemas com dependências de pares (peer dependencies) foram encontrados
.
├─┬ ember-auto-import 2.10.0
│ ├─┬ babel-loader 8.4.1
│ │ └── ✕ peer webpack@ faltando ">=2"
│ ├─┬ css-loader 5.2.7
│ │ └── ✕ peer webpack@ faltando "^4.27.0 || ^5.0.0"
│ ├─┬ style-loader 2.0.0
│ │ └── ✕ peer webpack@ faltando "^4.0.0 || ^5.0.0"
│ └─┬ mini-css-extract-plugin 2.9.2
│   └── ✕ peer webpack@ faltando ^5.0.0
└─┬ ember-source 5.12.0
  ├── ✕ peer @glimmer/component@ faltando ^1.1.2
  └─┬ ember-auto-import 2.10.0
    └── ✕ peer webpack@ faltando ^5.0.0
Dependências de pares que deveriam ser instaladas:
  @glimmer/component@^1.1.2   webpack@">=5.0.0 <6.0.0-0"


Concluído em 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: Comando falhou com código de saída 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'

Mas parece que ele converteu todos, exceto alguns dos templates, e embora eu ainda não entenda o porquê, não estou surpreso, pois eles têm algumas coisas malucas neles e eu estava no processo de reescrevê-los de qualquer maneira.

1 curtida

Acho que a mensagem de peerdependência é provavelmente apenas um aviso que pode ser ignorado para os propósitos do codemod.

Não tenho certeza sobre o outro erro. Há algo mais útil mais acima no log? Este é um tema/plugin público que você poderia compartilhar?

Sim. Acho que os erros são todos espúrios. Apenas algumas coisas não foram convertidas. Não tenho certeza do porquê, mas como eu disse, eu estava planejando reescrevê-las de qualquer maneira.

Eu acho que foram uma dúzia ou mais que conseguiu reescrever, então é um milagre absoluto!

Eu vou tentar em outras coisas que são públicas em breve.

Obrigado!

1 curtida