Добавление JavaScript в компонент темы

Есть ли хороший способ добавить JavaScript (один файл, минифицированный) в компонент темы, чтобы его можно было использовать в common/header.html?

Сработало. Просто добавил JS (не минифицированный) в common/header.html.

См. discourse-highlight-text/common/header.html at master · sbernhard/discourse-highlight-text · GitHub

Хорошо бы, если кто-то задокументировал бы это поведение в руководстве для разработчиков тем и компонентов.

Как вы использовали JS в своём компоненте? Я использую компонент Versatile Banner и хочу добавить кнопку, которая вызывает мою пользовательскую JS-функцию. Я добавил код в head, как вы указали, но получаю ошибку CSP:

dev.londonbikers.com/:1 Отказано в выполнении обработчика событий inline, так как это нарушает следующую директиву Content Security Policy: "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/". Для включения inline-выполнения требуется либо ключ 'unsafe-inline', либо хеш ('sha256-...'), либо nonce ('nonce-...').

Это происходит при вызове моего кода через onclick="NavigateToCustomLoginUrl('facebook')" на кнопке.

Кажется, я сам себе ответил на этот вопрос: Content security policy  |  Articles  |  web.dev

Проверьте loadScript в коде/метаданных, чтобы найти системный способ решения этой задачи.