Důvody
Šahat do vendor balíčků většinou nebývá dobrý nápad, ale najdou se případy, kde je to legitimní řešení nějakého problému. Například nemá smysl posílat PR (refactor v příští verzi) nebo chybí nastavení nějaké drobnosti, kterou by autor schválit třeba ani nechtěl. V tomto případně například aktualizujeme Bootstrap 5 dříve, než autor doplňku a stačí nám opravit pár drobností (doplnit bs-
apod).
Zároveň chcete zachovat funkční ekosystém CI/CD, to je důležitý aspekt výběru správného řešení. Pokud by se patch nedokázal aplikovat, tak se o tom v testech či CI dozvíte.
Alternativy
Můžeme začít od nejhorší:
- Ručně si to upravte na serveru
- Udělejte si fork a používejte ho
- Composer patch
- Poslat PR do balíčku
- Napsat si vlastní doplněk
Vytvoření patche
V repositáři, kde chceme provádět a hlídat změny při aktualizacích composeru, stačí provést požadované změny. Následně si je vygenerujeme pomocí příkazu git diff > datagrid.patch
. Bude to vypadat třeba následovně:
...
diff --git a/src/templates/column_status.latte b/src/templates/column_status.latte
index 5f7f96e..5661806 100644
--- a/src/templates/column_status.latte
+++ b/src/templates/column_status.latte
@@ -8,7 +8,7 @@
<div class="dropdown">
{if $activeOption}
{if $status->shouldBeRendered($row)}
- <button class="dropdown-toggle {$activeOption->getClass()} {$activeOption->getClassSecondary()}" type="button" data-toggle="dropdown">
+ <button class="dropdown-toggle {$activeOption->getClass()} {$activeOption->getClassSecondary()}" type="button" data-bs-toggle="dropdown">
...
Nastavení
Nejdříve je nutné povolit spouštění pluginu cweagans/composer-patches
.
"config":
{
"allow-plugins":
{
"cweagans/composer-patches": true
}
}
A následně v composer.json
v sekci extra nastavení aplikování konkrétního patche na vybraný vendor repositář.
"extra":
{
"patches":
{
"ublaboo/datagrid":
{
"Fix BS5": "patch/datagrid.patch"
}
}
}
Soubor umístěte do složky patch
nebo kamkoliv jinam. V tuhle chvíli byste měli mít například automaticky upravovaný ublaboo/datagrid
na Boostrap 5 ve stabilní verzi, než vyjde nová major verze.