Usar \u003cscript type='text/discourse-plugin\u003e ou \u003cscript type='text/x-handlebars'\u003e em temas agora está obsoleto. Qualquer uso dessas tags em temas deve ser atualizado de acordo com as instruções abaixo.
\u003cscript\u003e e \u003cscript type='text/javascript'\u003e normais não são afetados por esta alteração.
Cronograma
Estas são estimativas aproximadas, sujeitas a alterações
-
Maio de 2025 - Mensagens de depreciação do console ativadas
-
Julho de 2025 - Banners de aviso para administradores ativados
-
Final de Setembro de 2025 - Remoção do recurso
Convertendo \u003cscript type='text/x-handlebars'\u003e
Modelos introduzidos usando este método devem ser movidos para arquivos .hbs dedicados ou refatorados em arquivos gjs.
Para manter como HBS, os modelos de conector podem ser colocados em:
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
e os modelos de componente podem ser colocados em:
{theme}/javascripts/discourse/components/{component-name}.hbs
Para construir conectores e componentes no formato moderno .gjs, confira este capítulo do tutorial do desenvolvedor de temas:
Convertendo \u003cscript type='text/discourse-plugin'\u003e
O código dentro dessas tags pode ser migrado para um arquivo JavaScript dedicado.
Se você desenvolve seu tema através da interface do painel de administração, copie o código de dentro do \u003cscript\u003e e mova-o para a aba JS (onde diz // seu código aqui).
Se você desenvolve seu tema localmente, crie um novo arquivo em
{theme}/javascripts/discourse/api-initializers/init-theme.js
então adicione este wrapper e coloque seu código no local indicado:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Seu código aqui
});
Em tags de script, a única maneira de importar outros módulos JS era usando a sintaxe require(). Embora isso ainda funcione em um arquivo .js, em breve será obsoleto, então agora seria um bom momento para convertê-lo para imports ES6 modernos. Por exemplo:
- const I18n = require("discourse-i18n").default;
+ import I18n from "discourse-i18n";
- const { h } = require("virtual-dom");
+ import { h } from "virtual-dom";
Para mais informações sobre inicializadores JS:


