Pular para o conteúdo principal
Versão: v1.0.0

Criar Plugin Localmente

Nesta seção, você encontra um tutorial de como Criar um Plugin v3 localmente.


Atenção!

Este tutorial foi criado utilizando Plugins na versão 3.

Objetivo

Este tutorial tem o objetivo de orientar a criação, teste local e publicação de Plugins na StackSpot. E ajudar você a entender como criar conteúdo na StackSpot.

Os Plugins que serão utilizados como exemplos:

  • Geram uma página HTML e adicionam tabelas a ela.

Nível: Iniciante.

Informação Adicional

Este exemplo é uma das possibilidades de criar e publicar plugins localmente. Por isso, não é necessário estar dentro de um Estúdio.

A seguir, confira o resumo dos passos:

  1. Criar Plugin A, base que gera página HTML com header e título customizável por input.
  2. Testar Plugin A.
  3. Criar Plugin B que integra uma tabela com dados de produto da API - DummyJson Products
  4. Testar Plugin B.
  5. Publicar os Plugins no Estúdio.

Pré Requisitos

Cuidado!

Esta jornada é feita usando somente o STK CLI, pois é um tutorial de criação de Plugins na sua máquina local.

Passo 1. Criar um diretório vazio

É onde o seu projeto irá ficar. No seu terminal, execute o comando:

mkdir test-html

Acesse o diretório utilizando a sua IDE de costume. Execute o comando:

cd test-html

Passo 2. Criar Plugin A

O Plugin A gera uma página HTML com header e título customizável por input.

  1. Ainda na sua IDE, dentro do diretório criado, execute o comando:
stk create plugin base-html-plugin
  1. Responda as perguntas no seu terminal. Siga o modelo:
  • Plugin type (tipo do Plugin): app
  • Add repository: no. A resposta aqui é não. Neste tutorial você irá criar Plugins somente no seu ambiente local.
  • Version (número da versão): 0.0.1
  • Plugin description (descrição do Plugin): Plugin para gerar um projeto base HTML
  • Required connection interfaces: não selecione nenhuma Connection Interface, apenas aperte Enter.

Pronto, você criou o Plugin A.

Uma estrutura de pastas foi criada dentro do diretório. Confira na imagem, a estrutura padrão de um Plugin StackSpot:

Captura de tela do Visual Studio Code mostrando a estrutura de pastas do Plugin A. A pasta principal é base-html-plugin, que contém a subpasta docs com arquivos .md como about.md, implementation.md, markdown-guide.md, release-notes-version.md e requirements.md. Há a pasta templates e, por último, o arquivo plugin.yaml

Passo 3. Personalizar conteúdo do Plugin A

Agora, complete as informações do Plugin para que ele funcione como a base HTML. Para isso, é necessário um repositório, neste caso utilize um já criado pela StackSpot. Clone o repositório executando o comando:

git clone https://github.com/stack-spot/demo-html-plugins.git 

Ele contém as seguintes pastas:

Estrutura de pastas do repositório clonado. Nome das pastas demo-html-plugins>base-html-plugin>dummy-json-plugin. Arquivo LICENSE e README.md

Abra a pasta base-html-plugin e em seguida entre em templates. Confira na imagem:

Pasta de templates aberta. Os arquivos são: css, js, pasta resource, index.html, plugin.yaml.

Siga as instruções:

  1. Copie toda a estrutura de arquivos dentro dessa pasta.

  2. Volte para a pasta base-html-plugin que você criou no Passo 2. Acesse a pasta Templates, apague o arquivo README e cole o conteúdo que você acabou de copiar.

A pasta deve ficar como na imagem:

Pasta de templates copiada para Plugin A. A estrutura da pasta base-html-plugin é: docs, templates com css, js, resource, index.html e plugin.yaml

  1. Para personalizar sua página HTML, acesse o arquivo plugin.yaml e apague o conteúdo Inputs e copie e cole o código:
 inputs:
- label: Titulo da página HTML
name: title
type: text
required: true
default: Treinamento - StackSpot
help: 'Informe o título da página HTML que será gerada'

Assim como no GIF:

Substituição de inputs no Plugin A. Copiar e colar a parte do código mencionado anteriormente

Pronto, você personalizou seu Plugin A.

Passo 4. Aplicar Plugin A

Agora você deve aplicar seu Plugin para testá-lo, confira:

  1. Crie um diretório vazio dentro do mesmo diretório criado no Passo 1. (test-html). Este será a pasta onde sua página HTML será gerada após aplicar os Plugins.

Execute o comando:

mkdir example-project

Acesse o novo diretório, execute o comando:

cd example-project
  1. Aplique o Plugin A para gerar a página base. Para isso, execute o comando com o caminho absoluto do diretório do Plugin A:
stk apply plugin <caminho_do_diretorio_absoluto_pluginA>
Informação Adicional

Confira um exemplo de caminho absoluto do diretório:

/Users/username/test-html/base-html-plugin

Dentro do diretório example-project que você criou, confira a estrutura de pastas como na imagem:

Teste Plugin A. A estrutura dentro do diretório com a pasta example-project e dentro com .stk, css, js, resource e index.html

Pronto, você já pode visualizar a base da sua página HTML acessando o diretório acima no seu computador. Por exemplo, no Mac, acessando pelo Finder; no Windows, pelo Windows Explorer.

Passo 5. Criar Plugin B

O Plugin B que integra uma tabela com dados de produto da API - DummyJson Products. E também:

  • Habilita customização de colunas exibidas na tabela; e
  • Utiliza hooks para manipulação de arquivos utilizando snippets.

Siga as instruções para criar o Plugin B:

  1. Em um terminal ainda dentro da IDE, continue dentro do diretório criado no Passo 1. (test-html) e execute o comando:
stk create plugin dummy-json-plugin
  1. Responda as seguintes perguntas no seu terminal:
  • Plugin type (tipo do Plugin): app.
  • Add repository: no. A resposta aqui é não. Neste tutorial você irá criar somente no seu ambiente local.
  • Version (número da versão): 0.0.1.
  • Plugin description (descrição do Plugin): Plugin para integrar uma tabela de dados na base HTML.
  • Required connection interfaces: Não selecione nenhuma Connection Interface, apenas aperte Enter.

Pronto, você criou o Plugin B.

  1. Confira a estrutura de pastas criada dentro do diretório. Esta é a estrutura padrão de um Plugin StackSpot. Confira na imagem:

Estrutura de Pastas Plugin B. A estrutura da pasta dummy-json-plugin. A pasta docs possui arquivos .md about.md, implementation.md, markdown-guide.md, release-notes-0.01.md, requirements.md. A pasta templates tem os arquivos README.md e plugin.yaml.

Passo 6. Personalizar conteúdo do Plugin B

Complete as informações do Plugin para que ele funcione. Agora, utilize o repositório criado pela StackSpot que você já clonou no Passo 3., o demo-html-plugins.

  1. Copie dois conteúdos deste arquivo:
  • A pasta inteira chamada Snippets; e
  • O conteúdo da pasta Templates.

Conteúdos para copiar do Demo HTML completo. Está destacado na imagem com um quadrado vermelho o que você precisa copiar. A pasta snippets e os arquivos css e js

  1. E depois cole o conteúdo dentro da pasta do Plugin B, dummy-json-plugin. E você deve apagar o arquivo README que existe dentro da pasta Templates.

A pasta deve ficar como na imagem:

Plugin B pasta templates. Depois de copiar a pasta snippets fica com os arquivos: import-css.txt, import-js.txt, table.txt. E a pasta templates com o css e js.

  1. Por fim, configure o arquivo plugin.yaml e adicione hooks ao Plugin. Cole o código na seção inputs:
 inputs:
- label: Nome da tabela que será gerada
name: table_id
type: text
required: true
default: product-list
help: 'Informe o nome da tabela que será gerada na página HTML'
- label: Colunas da tabela separado por ';'
name: column_list
type: text
default: ID;TÍTULO;DESCRIÇÃO
required: true
help: 'Informe quantidade de colunas da tabela que será gerada'
- label: Atributos da tabela separado por ';' (respectivamente do inserido nas colunas)
name: attr_list
type: text
default: id;title;description
required: true
help: 'Informe os atributos das colunas na mesma ordem que inserido no campo column_list'
hooks:
- type: edit
trigger: before-render
path: index.html
changes:
- search:
string: "</body>"
insert-before:
snippet: snippets/table.txt
when:
not-exists: "<table id=\"{{table_id}}\">"
- type: edit
trigger: before-render
path: index.html
changes:
- search:
string: "</html>"
insert-before:
snippet: snippets/import-js.txt
when:
not-exists: "./js/{{table_id}}Action.js"
- type: edit
trigger: before-render
path: index.html
changes:
- search:
string: "</head>"
insert-before:
snippet: snippets/import-css.txt
when:
not-exists: "css/ListProducts.css"

Pronto, você customizou seu Plugin B.

Passo 7. Aplicar Plugin B

Aplique o Plugin B para gerar a tabela de requisição. Você deve aplicá-lo no mesmo diretório criado no Passo 1.

Siga as instruções:

  1. Acesse o diretório criado no Passo 4, execute o comando:
cd example-project
  1. Execute o comando com o caminho absoluto do diretório do Plugin B:
stk apply plugin <caminho_do_diretorio_absoluto_pluginB>

Coloque o caminhos sem as chaves.

informação

Confira um exemplo de caminho absoluto do diretório:

/Users/username/test-html/dummy-json-plugin

Coloque o caminho sem as chaves.

  1. Então responda as perguntas no terminal:
  • ? Nome da tabela que será gerada (product-list): .
  • ? Colunas da tabela separado por ';' (ID;TÍTULO;DESCRIÇÃO): .
  • ? Atributos da tabela separado por ';' (respectivamente do inserido nas colunas) (id;title;description): aperte Enter.

Após responder as perguntas o output deve ser:

Plugin <caminho_do_diretorio_absoluto_pluginB> aplicado.

Pronto, você já pode visualizar a sua página HTML atualizada com a tabela.

Informação Adicional

O resultado final (depois da aplicação dos Plugins) fica no diretório do projeto gerado, neste caso, no example-project. Nesse projeto, você encontra um arquivo index.html que é possível abrir no navegador pra verificar o resultado da aplicação dos Plugins.

Para acessá-lo, entre no diretório por meio do seu computador. Se for um MAC, por exemplo, seria pelo Finder; se for um Windows, pelo Windows Explorer.

O resultado da sua página deve ser igual à imagem:

Página HTML gerada. A pasta possui uma tabela com 3 colunas. O título é Treinamento StackSpot. A primeira coluna é o ID, a segunda Título e a terceira Descrição.

Agora que você criou e aplicou os Plugins localmente, a próxima etapa é Publicá-los.

Passo 8. Publicar os Plugins

Todo o processo até aqui foi feito localmente. Ao publicar o seu Plugin, você permite que outras pessoas possam utilizá-lo no Portal.

Pré requisitos

  1. Criar um Estúdio, caso tenha permissão; ou
  2. Estar dentro de um estúdio.

Você deve publicar primeiro o Plugin A e depois o Plugin B.

  1. Acesse o diretório raiz do Plugin A e execute o comando:
stk publish plugin --studio studio-slug-name 

Na StackSpot, os Slugs são identificadores únicos para as Contas, Estúdio, Stacks e Plugins e compõem as URLs da StackSpot.

  1. Agora, acesse o diretório do Plugin B e execute o mesmo comando acima.

Pronto, você publicou o Plugin A e o Plugin B e pode encontrá-lo no seu Estúdio.