Balík pro automatickou správu NEON konfigurace z balíků, asset souborů, Composer akce,

baraja
Nette Blogger | 29
+
+3
-

Repo projektu: https://github.com/…kage-manager

Ahoj,

už hodně dlouho mi leží v hlavě nápad na balík, který bude (téměř) dokonale propojovat všechny silná místa Composeru a Nette. Oba nástroje mi extrémním způsobem šetří práci, ale dlouho jsem neznal elegantní řešení častých praktických věcí:

  • Jak rychle nakonfigurovat config.local.neon + založit novou lokální databázi?
  • Jak rychle invalidovat (smazat) cache a pročistit projekt?
  • Jak po instalaci balíku do projektu nakonfigurovat neon soubory?
  • Pokud balík obsahuje komponenty, jak elegantně získat jejich JS/CSS + další assety?
  • Jak automaticky aktualizovat Adminer?
  • Jak umožnit kolegům začátečníkům rychle a elegantně opravit formální chyby v projektu a strojově na ně upozornit?

Výčtem častých potíží, které v týmu vznikají, bych mohl pokračovat klidně dál.

Co ale většinu problémů vyřešit zavoláním příkazu composer dump?

Udělal jsem si menší uživatelský výzkum ve firmách a zjistil, že většinu těchto věcí řeší přes balíčky a pak ručně konfigurují neony, což mi přijde velmi nesystémové. Zkrátka jsem (aspoň podle mého názoru) 99 % těchto případů už nyní dokázal automatizovat.

Řešení? Základ na dva kroky, pokročilejší na víc:

1. Nainstalujte balík baraja-core/package-manager

Tj. příkaz:

composer require baraja-core/package-manager

2. Do projektového composer.json vložit sekci:

"scripts": {
	"post-autoload-dump": "Baraja\\PackageManager\\PackageRegistrator::composerPostAutoloadDump"
}

Poté se po jakékoli akci Composeru zavolá specializovaný script, co pomůže.

Zkuste například odstranit local.neon. Pokud neexistuje, připravený task se zeptá, jestli ho má založit a s jakými údaji k DB se připojit (které rovnou i zvaliduje a na localhostu často zjistí sám).

Další tasky je velmi lehké přidávat.


Funkcí, které balík řeší, je ještě celá řada a hodně uvidíte přímo v implementaci. Budu moc rád za zpětnou vazbu. Pokud balík dává smysl, rád bych ho dále rozvíjel i podle reálných potřeb komunity a třeba se jednou stane užitečným doplňkem každé Nette aplikace.

Díky.

Editoval baraja (13. 8. 2019 18:21)

akadlec
Člen | 1326
+
+1
-

Pěkný, mám rozpracované něco podobného. Já chtěl udělat i automatickou registraci extension s default nastavením a možností aktivace/deaktivace ext. Abych nemusel sahat na neony a dokázal aktivovat ext. přes ui

baraja
Nette Blogger | 29
+
0
-

@akadlec Automatická registrace extensions z balíků je plně podporována. Pokud se na rootu balíku vyskytuje soubor config.neon nebo common.neon, bude celý jeho obsah použit.

Současná architektura je navržena tak, aby se všechny služby a extensions registrovaly vždy, protože pokud je něco nainstalováno, tak to máš mít možnost kdykoli použít. Pokud ti jde o ušetření výkonu, tak lze služby načítat lazy pomocí accessorů, což umí DIC nativně přes generování továrničky.

Jenom moc nerozumím tomu, jak by nastavení přes UI fungovalo. Pokud vím, tak kontejner je něco, co se má vygenerovat jenom jednou a pak uložit do cache a následně používat. Moc se mi nelíbí představa, že se jednou za čas bude muset invalidovat a celý znovu složitě sestavovat, protože třeba při použití Doctrine to může trvat i několik desítek sekund.