Kdy použít verzovací nástroje pro monorepo s více balíčky?

From BloomWiki
Jump to navigation Jump to search

Každá webová stránka vzniká ze dvou jazyků, které se dělí o práci. HTML určuje, co na stránce je – nadpisy, odstavce, seznamy, odkazy, obrázky. CSS rozhoduje, jak to vypadá – barvy, mezery, písmo, rozložení. Kdo je zamění, dřív nebo později narazí. Do HTML se nemá psát, jak má být něco velké nebo červené, a do CSS nepatří texty ani struktura.

Dodržování licencí není jednorázový úkol. Zaveďte pravidelnou kontrolu při každém přidání nové závislosti a při každém vydání. Ve smlouvě s dodavatelem si vymíňte, že všechny použité komponenty mají licence slučitelné s vaším produktem. A pokud si nejste jistí, obraťte se na právníka specializovaného na duševní vlastnictví. Ušetříte si čas i peníze za zpětné řešení problému, který vznikl kvůli přehlédnuté podmínce.

Až program poběží, zkuste ho rozšířit. Přidejte Console.Write("Zadejte jméno: ");, načtěte vstup pomocí string jmeno = Console.ReadLine(); a vypište odpověď přes Console.WriteLine($"Zdravím, jmeno");. Znak dolaru před uvozovkami zapíná interpolaci řetězců, takže do textu můžete vkládat proměnné ve složených závorkách. Bez tohoto znaku se vypíše doslovný text se závorkami. Pamatujte, že ReadLine vrací text, ne číslo — pokud chcete počítat, musíte hodnotu převést přes int.Parse a ošetřit případ, kdy uživatel zadá písmeno místo číslice.

Jak si ohlídat licence v praxi Začněte tím, že si uděláte inventuru všech závislostí. Nestačí se podívat do souboru s požadavky, protože licence se mohou lišit i mezi podverzemi. Použijte nástroj pro skenování licence (například skener závislostí), který vygeneruje seznam knihoven a jejich licenčních podmínek. Výsledek neberte jako konečný verdikt – vždy si u klíčových knihoven ověřte text licence přímo v repozitáři, protože někteří autoři přidávají dodatečné podmínky nebo výjimky.

Pozor na to, jak nástroj pracuje s rozsahem závislostí. Pokud máte v monorepu balíčky, které na sobě závisí pomocí přesných verzí, každé vydání jednoho balíčku znamená, že musíte vydat i všechny závislé. To je správné, ale snadno to vede k lavinovému efektu. Řešením je používat rozpětí, například pomocí symbolu ^, ale jen tam, kde to dává smysl. U interních balíčků se často vyplatí závislost specifikovat pomocí pracovního prostoru, tedy odkazem na lokální balíček, a teprve při publikaci se nahradí konkrétní verzí. Tím se vyhnete ručnímu přepisování čísel.

Funkce, která načte data, přepočítá je, vykreslí do tabulky a ještě odešle událost, dělá příliš mnoho věcí. Rozdělte ji. Každá funkce by měla dělat jednu věc a dělat ji celou. Prakticky to znamená, že byste měli být schopni funkci popsat jednou větou bez spojky „a". Když se do věty „a" vrací, je čas funkci rozříznout. Kratší funkce se snáze testují, snáze se v nich hledá chyba a méně často vedlejší efekty uniknou pozornosti.

Vyhýbejte se sdílenému mutovatelnému stavu, kde to jde. Globální proměnné a objekty předávané mezi funkcemi, které je mění, dělají tok dat nepředvídatelným. Pokud funkce vrací novou hodnotu místo toho, aby přepisovala vstup, snáz se testuje a snáz se čte. Stejně tak dávejte přednost malým modulům s jasně vymezeným rozhraním před jedním velkým souborem, kde se všechno odkazuje na všechno.

Na co si dát pozor při prvním spuštění Základní program vypadá takto: using System; na prvním řádku, pak namespace MojePrvniApp, třída Program a v ní metoda static void Main(string[] args). Uvnitř metody zavolejte Console.WriteLine("Ahoj světe");. Tři věci lidé pletou nejčastěji: chybějící středník na konci příkazu, zapomenuté uvozovky kolem textu a velké písmeno v názvu metody Main — C# rozlišuje velikost písmen, takže main kompilátor odmítne. Stejně tak Console.WriteLine musí mít přesně toto psaní, jinak dostanete chybu CS0103.

Open source licence nejsou jen formalita na GitHubu. Určují, co smíte s kódem dělat, jak ho upravovat a šířit dál. Pokud je nedodržíte, můžete se dostat do právního sporu i při nejlepší vůli. Přitom stačí málo – pochopit, co která licence vyžaduje, a nastavit procesy tak, aby se na to nezapomínalo.

Než začnete psát kód, ověřte si, že máte nainstalovanou správnou sadu nástrojů. Pro C# na Windows stačí Visual Studio s workloadem .NET desktop development, na macOS a Linuxu postačí .NET SDK a libovolný textový editor. Rozdíl je v tom, že SDK obsahuje kompilátor příkazového řádku dotnet, který potřebujete pro spuštění. Pokud po instalaci příkaz dotnet --version nic nevrátí, sada nástrojů není v systémové proměnné PATH a aplikaci nespustíte, i když kód vypadá správně.

Nástroje, které řeší změny a závislosti Pro monorepa se nejčastěji používají nástroje postavené na konvenčních commitech, jako je Changesets, Lerna nebo Nx. Fungují tak, že vývojář při změně přidá krátký soubor s popisem, co se změnilo a jaký typ změny to je – oprava, nová funkce, nebo breaking change. Nástroj pak při vydání sám spočítá nové verze, aktualizuje vzájemné závislosti a vygeneruje changelog. Klíčové je, že se verzování neřeší ručně, ale na základě těchto záznamů. Bez nich se dříve nebo později stane, že někdo zapomene zvýšit verzi u balíčku, který byl nepřímo ovlivněn.