O uso de <script type='text/discourse-plugin'> ou <script type='text/x-handlebars'> em temas está agora obsoleto. Qualquer uso dessas tags em temas deve ser atualizado de acordo com as instruções abaixo.
<script> e <script type='text/javascript'> regulares não são afetados por esta mudança.
Cronograma
Estas são estimativas aproximadas, sujeitas a alterações
-
Maio de 2025 - Mensagens de depreciação no console ativadas
-
Julho de 2025 - Banners de aviso para administradores ativados
-
Final de setembro de 2025Março de 2026 - remoção do recurso
Convertendo <script type='text/x-handlebars'>
Os templates introduzidos com este método devem ser movidos para arquivos .hbs dedicados, ou reestruturados para arquivos gjs.
Para manter como HBS, os templates de conectores podem ser colocados em:
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
e os templates de componentes podem ser colocados em:
{theme}/javascripts/discourse/components/{component-name}.hbs
Desde março de 2026, os arquivos
.hbstambém estão obsoletos. Após fazer esta conversão, prossiga para as instruções em Deprecating .hbs file extension in themes and plugins
Para construir conectores e componentes no formato moderno .gjs, consulte este capítulo do tutorial do desenvolvedor de temas:
Convertendo <script type='text/discourse-plugin'>
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 do <script>, e mova-o para a aba JS (onde está escrito // your code here).
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 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 ficará 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 de JS:


