Vývoj
Vždy mluvte o funkcích, které chcete vyvinout, tím, že vytvoříte/najdete a okomentujete problém, který řeší váš problém, než na něm začnete pracovat, a informujte komunitu o tom, že začínáte kódovat tím, že problém prohlásíte za problém.
Žádost o stažení musí být provedena na větvi main
.
Do března 2023 byly příspěvky prováděny na větvi develop
. Tento postup je
nyní zastaralý.
Předpoklad pro vytvoření tohoto zásuvného modulu
Doporučujeme seznámit se s následujícími pojmy:
- Git
- NodeJS
- NPM
- Typescript
Pro sestavení pluginu musíte mít následující balíčky:
git
npm
(>=8.x)nodejs
(>=14.x)build-essential
coreutils
wget
reuse
Upozorňujeme, že tento zásuvný modul potřebuje pro server Prosody XMPP
obrázek aplikace. Tento AppImage poskytuje vedlejší projekt Prosody
AppImage. Skript
build-prosody.sh
stáhne binární soubory připojené k tomuto vzdálenému
úložišti a zkontroluje, zda je jejich hashsum sha256 správný.
Vývoj
Klonujte úložiště, vytvořte zásuvný modul a vytvořte větev kódu:
# Klonování úložiště. Nezapomeňte na --recursive pro klonování podmodulů.
git clone https://github.com/JohnXLivingston/peertube-plugin-livechat.git --recursive
cd peertube-plugin-livechat
# Nainstalujte závislosti NPM a poprvé sestavte modul:
Npm install
# Sestavte zásuvný modul po úpravě:
npm run build
# Pokud máte fork z repozitáře, přidejte jej jako vzdálený (příklad):
git remote add me git@github.com:MY_GITHUB_ACCOUNT/peertube-plugin-livechat.git
# Vytvořte místní větev pro svůj vývoj a zkontrolujteji (příklad):
git checkout my_development # Poznámka: pokud je přidružena nějaká záležitost, použijte jako název větve fix_1234 (kde 1234 je číslo issue).
# Chcete-li navrhnout své úpravy, odešlete svou větev do úložiště (příklad):
git push --set-upstream me my_development
# Poté přejděte do svého úložiště github pomocí webového prohlížeče a navrhněte žádost o stažení (viz další pokyny níže).
Jakmile jste připraveni ukázat svůj kód a požádat o zpětnou vazbu, odešlete návrh žádosti o stažení. Jakmile jste připraveni na kontrolu kódu před sloučením, odešlete žádost o stažení. V každém případě prosíme o propojení vašeho PR s problémy, které řeší, pomocí syntaxe GitHubu: “fixes #issue_number”.
Kód front-endu je ve složce client
, kód back-endu ve složce server
. Ve
složce shared
je několik sdílených kódů.
Obecné pokyny (vývoj zásuvných modulů, sestavení, instalace, …) naleznete v dokumentaci Peertube.
Zásuvný modul můžete sestavit s dalšími funkcemi ladění jednoduše pomocí:
NODE_ENV=dev npm run build
Tento zásuvný modul je v souladu s REUSE: používá
hlavičky SPDX k identifikaci licenčních informací svého zdrojového kódu.
Více informací naleznete na webových stránkách
REUSE. K aktualizaci hlaviček můžete použít
nástroj příkazového řádku
reuse. Příkaz npm run lint
použije ke kontrole shody příkaz reuse
. Nezapomeňte do hlaviček
SPDX přidat informace o autorských právech, když upravujete nějaký kód.
ESBuild vs Typescript
Tento zásuvný modul používá ESBuild pro generování frontend kódu, stejně
jako oficiální zásuvný modul peertube-plugin-quickstart
. ESBuild si
poradí s Typescriptem, ale nekontroluje typy (viz dokumentace
ESBuild). Proto
nejprve zkompilujeme Typescript s volbou -noEmit
, jen abychom
zkontrolovali typy (check:client:ts
v souboru package.json). Pokud je vše
v pořádku, spustíme ESBuild a vygenerujeme zkompilovaný javascript.
Režim ladění
Pro tento zásuvný modul existuje režim ladění, který zkracuje určité zpoždění. Například některé soubory protokolu se budou otáčet každé dvě minuty místo jednou denně. To umožňuje snadněji testovat některé akce, na které by se normálně čekalo hodiny nebo dny.
Pro zapnutí tohoto režimu stačí vytvořit soubor
/var/www/peertube/storage/plugins/data/peertube-plugin-livechat/debug_mode
(nahradit /var/www/peertube/storage/
správnou cestou ve vaší instalaci).
Ke spuštění režimu ladění stačí pouhá existence tohoto souboru. Chcete-li se ujistit, že je brán v úvahu, můžete restartovat instanci Peertube.
Tento soubor může obsahovat některé JSON, které umožňují pokročilejší
možnosti. Seznam existujících parametrů naleznete v souboru
server/lib/debug.ts
. Po každé úpravě obsahu restartujte Peertube.
Tento režim nepovolujte na produkčním serveru, ani na veřejném serveru. Mohlo by to způsobit bezpečnostní problémy.
Restart Prosody
Když je povolen režim ladění, můžete pomocí tohoto volání API restartovat
aplikaci Prosody:
http://your_instance.tld/plugins/livechat/router/api/restart_prosody
.
Toto volání nepotřebuje žádné ověření. Lze jej provést z příkazového řádku,
například pomocí příkazu curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody
.
Prosody debugger
Prosody AppImage je možné připojit ke vzdálenému debuggeru pomocí MobDebug.
Chcete-li tak učinit, musíte nastavit MobDebug ve složce, ke které má
přístup uživatel peertube
. Pak to přidejte do souboru debub_mode
:
{
"debug_prosody": {
"debugger_path": "/the_path_to_mobdebug/src",
"host": "localhost",
"port": "8172"
}
}
host
a port
jsou volitelné. debugger_path
musí ukazovat na složku, kde
je soubor .lua
MobDebug
.
Restartujte Peertube.
Spusťte svůj ladicí server.
Aby se Prosody připojil k debuggeru, zavolejte API
http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true
.
Tento hovor nevyžaduje žádné ověření. Lze to provést z příkazového řádku,
například pomocí curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true
.
Můžete dokonce nakonfigurovat svůj ladicí server tak, aby tento požadavek
spouštěl automaticky.
Prosody se poté restartuje a připojí se k debuggeru.
Rychlé vývojářské prostředí pomocí Dockeru
Na [fóru Peertube] je výukový program ve francouzštině (https://framacolibri.org/t/tutoriel-creer-un-environnement-de-developpement-de-plugin-peertube-rapidement-en-utilisant-docker -et-qui-permet-de-tester-la-federation/17631), který vysvětluje, jak rychle vytvořit prostředí pro vývojáře pomocí Docker.
Bylo z toho vytvořeno repo, podívejte se na pt-plugin-dev.
Poznámka: Z neznámého důvodu nemůže Prosody rozlišit adresy DNS kontejnerů
při použití knihovny lua-unbound. V pluginu je špinavý hack: stačí vytvořit
soubor /data/plugins/data/peertube-plugin-livechat/no_lua_unbound
ve vašem
docker-volume a restartovat kontejnery.
Rychle znovu sestavte a nainstalujte plugin
Když provádíte úpravy, nemusíte vždy znovu sestavovat celý projekt a znovu
instalovat plugin do vašeho vývojového prostředí. Můžete sestavit pouze
upravenou součást (pokud jste například upravili pouze soubory klienta: npm spustit build:client
). V souborech package.json
vyhledejte dostupné
skripty sestavení.
Pokud je zásuvný modul již nainstalován v instanci dev a nezměnili jste žádnou závislost, můžete rychle nainstalovat svou práci podle následujících kroků:
- znovu sestavit potřebné části zásuvného modulu (klient, styly, …),
- přepište obsah složky
data/plugins/node_modules/peertube-plugin-livechat/dist/
ve své instanci dev obsahem složkydist
pluginu, - změňte rekurzivně vlastníka souborů
plugins/node_modules/peertube-plugin-livechat/dist/
na svého uživatelepeertube
, - restartujte instanci.
Výkonnostní testy
Úložiště livechat-perf-test obsahuje několik nástrojů pro provádění testů výkonu. Lze je použít k vyhodnocení vylepšení kódu nebo k nalezení úzkých míst.