How to ship javascript library with plugin?

Obrigado, isso foi muito útil! Colocar minha biblioteca na pasta assets/lib está ajudando bastante.

Agora que tenho o caminho correto para ela, a biblioteca está apresentando problemas. :man_facepalming: É uma biblioteca grande com muitos submódulos — o argdown.js requer o ArgdownApplication.js e vários outros. Quando tenta carregar o ArgdownApplication.js, aparece a mensagem “Uncaught ReferenceError: exports is not defined”.

Tentei empacotar tudo em um único arquivo usando o Webpack, mas, por algum motivo, o pacote está faltando uma biblioteca de terceiros chamada “punycode”. Tentei adicionar o punycode ao módulo compilado, tentei enviá-lo para a pasta lib e adicionar register_asset 'lib/punycode.js' no plugin.rb, mas não estou tendo muito sucesso.

A biblioteca funciona no meu computador e em outro plugin que escrevi. Existe alguma maneira recomendada de adicionar um módulo NPM a um plugin do Discourse? Esta discussão diz para copiar a pasta do módulo para sua pasta /lib/; isso não está funcionando para mim.* Você poderia me indicar um exemplo de alguém que conseguiu enviar com sucesso um módulo NPM complexo com um plugin do Discourse, para que eu possa ver o que estou fazendo de errado?

*Nessa discussão, eles estão tentando carregar o módulo remotamente do unpkg.com; eu preferiria fazer isso localmente, embora talvez devesse tentar essa opção.

1 curtida