Este documento discute como criar um novo plug-in. Embora o processo descrito seja para criar plug-ins próprios, você pode usá-lo como uma diretriz para criar plug-ins de terceiros.
Para uma visão geral dos plug-ins, consulte Plug-ins.
Para uma introdução rápida sobre como criar um plug-in, consulte nosso Como criar um plug-in (2021).
Próprios x de terceiros
O usuário de destino de um plug-in é um desenvolvedor que encontra e usa o plug-in pelo npm.
Os plug-ins próprios são compatíveis com a equipe do Blockly e publicados no
escopo @blockly
no npm. Eles foram projetados para serem usados em uma ampla gama de
aplicativos do Blockly e são estáveis e fáceis de usar. Elas são armazenadas no
blockly-samples. Um campo para
definir a velocidade do motor pode ser usado em muitos projetos de robótica e é um bom
candidato para um plug-in próprio.
Os plug-ins de terceiros são mantidos e publicados de forma independente. Eles podem ser mais complexos, mais experimentais ou direcionados a um intervalo mais estreito de aplicativos do Blockly. Um campo para editar um objeto específico definido pelo esquema do banco de dados é melhor como um plug-in de terceiros.
Critérios próprios
Os plug-ins próprios precisam atender a estes requisitos:
- Funciona em todas as principais plataformas, a menos que uma isenção seja concedida pela equipe
do Blockly.
- Chrome, Firefox, Safari, Edge
- Ter um autor disposto a lidar com bugs durante o primeiro ano.
- Não monkeypatch o Blockly.
- Tenha uma API claramente definida e documentada.
- Não chame funções particulares ou de pacote do núcleo do Blockly, a menos que receba
uma isenção da equipe do Blockly.
- É permitido substituir as funções do pacote em uma subclasse definida.
- Se você quiser uma isenção, peça em um problema no blockly-samples.
- Fazer testes.
O processo
Os plug-ins passam por quatro etapas: sugestão, discussão, implementação e publicação.
Sugestão
Um plug-in começa como uma sugestão. Para sugerir um plug-in, crie um novo problema com o modelo de Solicitação de recurso.
como escrever uma solicitação de recurso.
SaibaAlém das informações básicas da solicitação de recurso, uma sugestão de plug-in precisa incluir:
- A API que o plug-in vai expor.
- APIs que precisam ser adicionadas ou alteradas no núcleo do Blockly para oferecer suporte ao plug-in.
- Capturas de tela, GIFs ou mockups, se o plug-in incluir recursos de interface.
- Uma explicação de por que ele precisa ser um plug-in próprio, em vez de um plug-in de terceiros.
A equipe do Blockly analisa as sugestões conforme elas chegam e encerra o problema ou concorda que seria um bom plug-in próprio.
Discussão
Em seguida, um plug-in entra na fase de discussão. Esta fase inclui:
- Esclarecimento da funcionalidade desejada.
- Esclarecimento da API do plug-in.
- Planejamento da implementação.
- Planejar testes.
- Discussão sobre as mudanças na API no núcleo do Blockly.
- Dividir plugins grandes em etapas de implementação.
- Nomeação de plug-ins, com base nas nossas convenções de nomenclatura.
- Confirmar que todos os critérios próprios serão atendidos.
Essa discussão geralmente acontece no problema do GitHub. Quanto menor o escopo do plug-in, mais rápida será a fase de discussão. Plugins maiores podem atrair a atenção da comunidade e opiniões fortes sobre a solução certa. Se isso acontecer com você, parabéns! Você encontrou algo que as pessoas consideram importante.
O objetivo é que, ao final da fase de discussão, todas as principais decisões de design sejam tomadas e que haja uma lista clara das etapas de implementação. Ambos precisam ser documentados nos comentários sobre o problema.
Durante a discussão, podemos decidir que um plug-in precisa ser de terceiros
e não ser publicado no escopo @blockly
. Nesse caso, vamos explicar
o motivo e encerrar o problema.
Quando a discussão for concluída, um membro da equipe do Blockly vai notar que ela está pronta para ser implementada.
Implementação
As etapas de implementação incluem:
- Execução de
npx @blockly/create-package
para configurar o plug-in e o diretório usando um modelo. Saiba mais... - Implementar a lógica principal do plug-in.
- Implementar uma interface, se necessário.
- Teste do plug-in usando o Mocha.
- Documentar o plug-in, incluindo o
README
.
Se um plug-in sugerido foi aprovado para implementação e você quer trabalhar nele, comente sobre o problema e pergunte se ele ainda está aberto para contribuições.
A implementação pode ser feita por vários colaboradores em paralelo. É possível implementar um plug-in de forma colaborativa no seu próprio fork ou por meio de solicitações de envio para este repositório. Se você quiser colaborar em um plug-in neste repositório, peça para a equipe do Blockly criar uma ramificação de recursos para você.
Os plug-ins precisam ser adicionados ao arquivo
gh-pages/index.md
na ramificação master
do blockly-samples. Isso fará com que eles apareçam
no nosso site de plug-ins. Os plug-ins próprios
precisam apontar para a página de teste. Plugins de terceiros também podem ser adicionados
a essa página e podem apontar para um link escolhido pelo proprietário, como uma
demonstração hospedada ou a página npm.
Publicação
Por fim, publicação. A equipe do Blockly usa o Lerna para gerenciar a versão e a publicação de todos os plug-ins.
Todas as quintas-feiras, os plug-ins que foram alterados desde a última versão são publicados. Se você precisar que uma mudança seja publicada mais cedo, mencione isso na sua pull request.
O site de plug-ins também é atualizado sempre que plug-ins são publicados.
Os plug-ins que não estão prontos para publicação precisam ser marcados como private
no
package.json
. Isso pode acontecer se um plug-in depender de uma mudança ainda não publicada
no núcleo do Blockly. O Core Blockly é publicado
na última semana de cada trimestre (uma vez a cada três meses).