Efektivní programátoři se snaží ušetřit každou sekundu při vývoji. Například místo toho, aby vypisovali v terminálu celý dotaz tak si například píšou aliasy/zkratky. Tak že docker-compose up -> dcu, ls -al -> ll. Kdo neví, co jsou aliasy, zde je link, kdo má windows tomu bohužel neporadím, protože to není operační systém pro práci programátora. Když děláte v týmu a každý budete mít svoje alisy, je to možnost, ale efektivnější cesta je mít aliasy napříč projektem sjednocené a k tomu ještě v gitu.
Jak na to?
Vytvoříme v projektu soubor, který se bude jmenovat Makefile a vložíme do něj:
foo:
echo: "Jak to jde mistře?"
V ukázce “foo:” se chová jako název funkce/zkrátka. Pod tím řádek s odsazením je příkaz. Může jich být více pod sebou.
Když do terminálu napíšeme make a odpálíme to, výpis bude:
echo "Jak se máš mistře"
Jak se máš mistře
První deklarace je zároveň výchozí. Tzn, pokud v souboru budete mít víc deklarací, vykoná se vždy první, proto se většinou pojmenovává jako “all”. Je to konvence hlavně pro vývojáře v C/C++ a říká, co všechno se musí zbuildit, aby to bylo gucci. Příklad:
all: foo gogo
foo:
echo: "Jak to jde mistře?"
gogo:
echo: "Jak jdou buildy?"
Když odpálíme make, dostaneme:
echo "Jak se máš mistře"
Jak se máš mistře
echo "Jak jdou buildy"
Jak jdou buildy
Abychom se nám nevypisoval příkaz a jeho exekuce, tak před echo použijeme @. A jak teda může vypadat náš první jednoduchý Makefile i s nápovědou?
all:
@echo "make dcu --- Start docker-compose up"
@echo "make node-bash --- Connect to node docker container"
dcu:
docker-compose -up
node-bash:
docker-compose exec node-super-cool /bin/sh
Když zavoláte pouze make, vypíše se vám nápověda, co váš soubor obsahuje. Po té spustíte co budete potřebovat. Máte to v projektu a v gitu napříč týmem. Nemusíte si ani všechny dotazy pamatovat. Když přijde někdo nový použije make a hned ví. Tady jsme si ukázali pouze 15% co vše make umí. Je to hodně silný nástroj, a kdyby jste se chtěli dozvědět víc:
https://opensource.com/article/18/8/what-how-makefile
Pokud budete mít dotaz kontaktuje mě na jurij@starynec.cz. Budu rád, když mi napíšete feedback 😊. Pro více info mě sledujte na instagramu.