Desenvolver
Fale sempre sobre os recursos que você quer desenvolver, criando/encontrando e comentando o problema que o aborda antes de começar a trabalhar nele, e informe à comunidade que você começou a codificar reivindicando o problema.
O Pull Request deve ser feito no branch main
.
Até março de 2023, as contribuições eram feitas no branch develop
. Este
procedimento está obsoleto.
Pré-requisito para construir este plugin
É altamente recomendável estar familiarizado com os seguintes conceitos:
- Git
- NodeJS
- NPM
- Texto datilografado
Para construir o plugin, você deve ter os seguintes pacotes:
git
npm
(>=8.x)nodejs
(>=14.x)construção-essencial
coreutils
wget
reutilização
Observe que este plugin precisa de uma AppImage para o servidor Prosody
XMPP. Esta AppImage é fornecida pelo projeto paralelo Prosody
AppImage. O script
build-prosody.sh
baixa os binários anexados a este repositório remoto e
verifica se seus hashsums sha256 estão corretos.
Desenvolver
Clone o repositório, construa o plugin e crie seu branch de recurso:
# Clone o repositório. Não se esqueça de usar --recursive para clonar submódulos.
git clone https://github.com/JohnXLivingston/peertube-plugin-livechat.git --recursive
cd peertube-plugin-livechat
# Instale as dependências do NPM e compile o módulo pela primeira vez:
npm install
# Compile o plugin após uma modificação:
npm run build
# Se você tiver um fork do repositório, adicione-o como remoto (exemplo):
git remote add me git@github.com:MY_GITHUB_ACCOUNT/peertube-plugin-livechat.git
# Crie uma ramificação local para seus desenvolvimentos e faça check-out dela (exemplo):
git checkout my_development # Observação: se um problema estiver associado, use fix_1234 como nome do seu branch (onde 1234 é o número do issue)
# Para propor suas modificações, envie seu branch para seu repositório (exemplo):
git push --set-upstream me my_development
# Em seguida, vá para seu repositório github com seu navegador da web para propor o Pull Request (veja instruções adicionais abaixo)
Quando estiver pronto para mostrar seu código e solicitar feedback, envie um rascunho de Pull Request. Quando estiver pronto para uma revisão de código antes da mesclagem, envie um Pull Request. De qualquer forma, vincule seu PR aos problemas que ele resolve usando a sintaxe do GitHub: “fixes #issue_number”.
O código do front-end está na pasta client
, o código do back-end em
server
. Há alguns códigos compartilhados na pasta shared
.
Para instruções gerais (desenvolvimento de plugins, construção, instalação, …), consulte a documentação do Peertube.
Você pode construir o plugin com recursos extras de depuração simplesmente usando:
NODE_ENV=dev npm run build
Este plugin é compatível com REUSE: ele usa
cabeçalhos SPDX para identificar informações de licenciamento de seu
código-fonte. Mais informações no site
REUSE. Você pode usar a ferramenta de linha de
comando reuse para
ajudar a atualizar os cabeçalhos. O comando npm run lint
usará o comando
reuse
para verificar a conformidade. Não se esqueça de adicionar suas
informações de direitos autorais nos cabeçalhos SPDX ao modificar algum
código.
ESBuild vs Typescript
Este plugin usa o ESBuild para geração de código frontend, como o plugin
oficial peertube-plugin-quickstart
. O ESBuild pode lidar com Typescript,
mas não verifica os tipos (consulte a documentação do
ESBuild). É por isso
que primeiro compilamos o Typescript com a opção -noEmit
, apenas para
verificar os tipos (check:client:ts
no arquivo package.json). Em seguida,
se tudo estiver correto, executamos o ESBuild para gerar o JavaScript
compilado.
Modo de depuração
Este plugin possui um modo de depuração que reduz um pouco o atraso. Por exemplo, alguns arquivos de log serão atualizados a cada dois minutos, em vez de uma vez por dia. Isso permite testar com mais facilidade determinadas ações, que normalmente levariam horas ou dias para serem concluídas.
Para habilitar este modo, você só precisa criar o arquivo
/var/www/peertube/storage/plugins/data/peertube-plugin-livechat/debug_mode
(substituindo /var/www/peertube/storage/
pelo caminho correto na sua
instalação).
A simples existência deste arquivo é suficiente para acionar o modo de depuração. Para garantir que ele seja levado em consideração, você pode reiniciar sua instância do Peertube.
Este arquivo pode conter JSON para habilitar opções mais avançadas. Para
obter uma lista dos parâmetros existentes, consulte
server/lib/debug.ts
. Reinicie o Peertube após cada modificação de
conteúdo.
Não habilite este modo em um servidor de produção, nem em um servidor público. Isso pode causar problemas de segurança.
Reiniciar Prosódia
Quando o modo de depuração estiver ativado, você pode reiniciar o Prosody
usando esta chamada de API:
http://your_instance.tld/plugins/livechat/router/api/restart_prosody
. Esta
chamada não requer autenticação. Pode ser feita a partir de uma linha de
comando, por exemplo, usando curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody
.
Depurador de prosódia
É possível conectar o Prosody AppImage a um depurador remoto usando MobDebug.
Para isso, você precisa configurar o MobDebug em uma pasta acessível ao
usuário peertube
. Em seguida, adicione isto ao arquivo debub_mode
:
{
"debug_prosody": {
"debugger_path": "/o_caminho_para_o_mobdebug/src",
"host": "localhost",
"porta": "8172"
}
}
host
e port
são opcionais. debugger_path
deve apontar para a pasta
onde está o arquivo .lua
MobDebug
.
Reinicie o Peertube.
Inicie seu servidor depurador.
Para que o Prosody se conecte ao depurador, chame a API
http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true
.
Essa chamada não requer autenticação. Ela pode ser feita a partir de uma
linha de comando, por exemplo, com curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true
.
Você pode até configurar seu servidor de depuração para iniciar essa
solicitação automaticamente.
O Prosody será reiniciado, conectando-se ao depurador.
Ambiente de desenvolvimento rápido usando Docker
Há um tutorial, em francês, no fórum Peertube que explica como construir rapidamente um ambiente de desenvolvimento usando o Docker.
Um repositório foi criado a partir dele, confira pt-plugin-dev.
Observação: por um motivo desconhecido, o Prosody não consegue resolver o
endereço DNS dos contêineres ao usar a biblioteca lua-unbound. Há um truque
sujo no plugin: basta criar um arquivo
/data/plugins/data/peertube-plugin-livechat/no_lua_unbound
no seu
docker-volumes e reiniciar os contêineres.
Reconstrua e instale o plugin rapidamente
Ao fazer modificações, você não precisa sempre reconstruir o projeto inteiro
e reinstalar o plugin no seu ambiente de desenvolvimento. Você pode compilar
apenas a parte modificada (por exemplo, se você modificou apenas os arquivos
do cliente: npm run build:client
). Verifique os arquivos package.json
para ver os scripts de compilação disponíveis.
Quando o plugin já estiver instalado na sua instância de desenvolvimento e você não tiver alterado nenhuma dependência, você pode instalar seu trabalho rapidamente seguindo estas etapas:
- reconstruir partes necessárias do plugin (cliente, estilos, …),
- sobrescrever o conteúdo
data/plugins/node_modules/peertube-plugin-livechat/dist/
da sua instância dev pelo conteúdo da pastadist
do plugin, - alterar recursivamente o proprietário dos arquivos
plugins/node_modules/peertube-plugin-livechat/dist/
para seu usuáriopeertube
, - reinicie sua instância.
Testes de desempenho
O repositório livechat-perf-test contém algumas ferramentas para realizar testes de desempenho. Ele pode ser usado para avaliar melhorias no código ou encontrar gargalos.