Existe uma boa maneira de adicionar JavaScript (um arquivo, minificado) a um componente do tema para que ele possa ser usado em common/header.html?
Consegui fazer funcionar. Apenas adicionei o JS (não minificado) ao common/header.html.
Veja discourse-highlight-text/common/header.html at master · sbernhard/discourse-highlight-text · GitHub
Seria bom se alguém pudesse documentar esse comportamento no guia de desenvolvedor de temas/componentes.
Como você usou o JS no seu componente? Estou usando o componente Versatile Banner e quero adicionar um botão que chame minha função JS personalizada. Coloquei no head conforme você mencionou, mas recebo um erro de CSP:
dev.londonbikers.com/:1 Recusa em executar manipulador de evento inline porque viola a seguinte diretiva de Política de Segurança de Conteúdo: "script-src https://dev.londonbikers.com/logs/ https://dev.londonbikers.com/sidekiq/ https://dev.londonbikers.com/mini-profiler-resources/ https://dev.londonbikers.com/assets/ https://dev.londonbikers.com/brotli_asset/ https://dev.londonbikers.com/extra-locales/ https://dev.londonbikers.com/highlight-js/ https://dev.londonbikers.com/javascripts/ https://dev.londonbikers.com/plugins/ https://dev.londonbikers.com/theme-javascripts/ https://dev.londonbikers.com/svg-sprite/". É necessário o uso da palavra-chave 'unsafe-inline', um hash ('sha256-...') ou um nonce ('nonce-...') para habilitar a execução inline.
Ao chamar meu código via onclick="NavigateToCustomLoginUrl('facebook')" em um botão.
Ah, acho que respondi à minha própria pergunta em Content security policy | Articles | web.dev
Verifique loadScript na base de código/metadados para uma maneira sistemática de realizar isso.