Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposta para modularizar o userscript #10

Open
CaioWzy opened this issue Sep 8, 2019 · 7 comments
Open

Proposta para modularizar o userscript #10

CaioWzy opened this issue Sep 8, 2019 · 7 comments

Comments

@CaioWzy
Copy link
Member

CaioWzy commented Sep 8, 2019

Esta issue tem o objetivo de promover uma discussão acerca da dificuldade de manutenção e modularização do userscript, e, se necessário for, procurarmos meios de dividir a responsabilidade em vários arquivos separados e organizados.

O que proponho aqui é que refatoremos todo o código e mantenhamos as funções básicas e principais no arquivo principal. Também, o código de cada site no seu próprio arquivo e, no final, todo o código é importado pelo arquivo principal pelo @require.

Também é possível utilizarmos um pré-processador e compilar tudo em um único arquivo durante a build.

Todos estão convidados para participar desta discussão.

@CaioWzy
Copy link
Member Author

CaioWzy commented Sep 8, 2019

Um adendo, seria interessante que os 'perfis' dos sites pudessem também ser 'compilados' tanto para o userscript quanto para a extensão, de acordo com a compatibilidade de cada. Assim, faríamos o trabalho uma única vez.

@rodorgas
Copy link
Member

Essa proposta é necessária!

Uma decisão importante é @require vs pré-processador. Estou inclinado a preferir o @require, porque o código não fica tão longo e difícil de ler para o usuário, quanto um pré-processado ficaria. No entanto dá mais trabalho pro usuário investigar o fonte, pois será necessário olhar em cada URL.

De qualquer forma, ler o fonte pelo userscript vai ser uma experiência ruim, o ideal é clonar o repositório mesmo. Eu acho que com @require é um pouco mais limpo e vai nos poupar de trabalho adicional para configurar webpack ou um script custom. O que você acha?

@CaioWzy
Copy link
Member Author

CaioWzy commented Sep 19, 2019 via email

@rodorgas
Copy link
Member

Seria meio esquisito 20 arquivos em cada release hahaha, mas acho que dá pra fazer. Serão arquivos pequenos também. Não parece um problema, exceto pelo fato de ser pouco usual.

@CaioWzy
Copy link
Member Author

CaioWzy commented Sep 20, 2019

Pensei em outra forma legal de fazer isso, que tal:

Ao gerar a build, o script consulta os arquivos a serem incluídos e os referencia usando a API raw + tag, exemplo. Então, gera o arquivo principal contendo referências @require e envia somente ele ao releases.

Assim, um único arquivo ficaria responsável por puxar do repositório o resto dos arquivos, como está delimitado por tag não haverá problema quando fizemos alterações posteriores.

@requeijaum
Copy link
Contributor

Modularizar de acordo com hostnames? É isso?
Aí um pré-processador se encarregaria de incluir os recursos seja para a extensão ou userscript?
Claro que tem que haver uma API básica pra conseguir simplificar ainda mais... como arquivos: general.js (pra funcionalidade geral) e hosts/huffpost.com.js - algo assim?

@CaioWzy
Copy link
Member Author

CaioWzy commented Oct 26, 2019

Exatamente. Estava pensado em aproveitar a ideia e criar um modelo comum que poderá ser lido pela extensão e userscript, assim, teríamos um único trabalho.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants