Objectif : boostez votre projet Symfony avec un Makefile. Nous allons voir les commandes de bases utilisé pour installer un projet.
Les bases :
cible: dépendance
commande
En exécutant make cible
, si le fichier de dépendance est plus récent que le fichier cible, la commande sera exécutée.
En pratique :
vendor: composer.lock
composer install
Lors de la première exécution de make vendor
, le dossier vendor n’existe pas. Quand la commande composer install
sera exécutée, le dossier vendor sera créé.
Si vous réexécutez la commande make vendor
immédiatement après, rien ne se passera. Car le dossier vendor est plus récent que le fichier composer.lock.
Creation d’un Makefile symfony
vendor: composer.lock
composer install
install: vendor
Vous avez ici une commande d’installation. Cela vous permet d’installer des dépendances PHP. Comme le fichier install ne sera jamais généré, il faut donc spécifier dans le Makefile que la cible est dite .PHONY
(fausse).
Vous ajoutez la ligne ci-dessous au début de votre Makefile :
.PHONY: install
Configuration de l’environnement
.env.local: .env
cp .env .env.local
Il s’agit d’une simple copie du fichier .env pour avoir une version locale.
Les dépendances front
Procédez de la même façon que pour les dépendances PHP.
node_modules: yarn.lock
yarn install
Vous éditez le fichier .env.local pour y mettre vos variables d’environnements (les paramètres de votre DB locale par exemple)
install: vendor node_modules .env.local
vi .env.local
Vous ajoutez ensuite ces lignes pour créer la base de données :
install: vendor node_modules .env.local
vi .env.local
bin/console doctrine:database:create --if-not-exists
bin/console doctrine:migration:migrate --no-interaction
bin/console doctrine:fixtures:load --no-interaction
Documentation de vos commandes
vendor: composer.lock ## Installation des dépendances PHP
node_modules: yarn.lock ## Installation des dépendances JavaScript
.env.local: .env ## Creation d'un fichier d'env local
Ces commentaires sont pratiques si vous souhaitez lire ou éditer le fichier Makefile, mais pas si vous souhaitez l’utiliser. Nous allons y remédier :
.PHONY: install help
.DEFAULT_GOAL= help
help:
@grep -E '(^[a-zA-Z_-]+:.*?##.*$$)|(^##)' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[32m%-10s\033[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/'
Vous définirez cette commande comme commande par défaut .DEFAULT_GOAL=help
et bien sûr PHONY.
Cette commande lira les commentaires du fichier et les affichera à l’utilisateur avec la commande make
Super ! Votre objectif est atteint. Vous pouvez simplement installer l’ensemble du projet avec make install
.