Accueil » Symfony 6 Makefile

Symfony 6 Makefile

Dans cette procédure, je vais vous expliquer comment créer un Makefile avec Symfony 6. Le fichier Makefile permet de mettre en place des automatisations de tâche à l’aide d’une commande ou la création d’alias pour de longues commandes. Je vais vous montrer un exemple de Makefile que j’utilise pour développer des applications sous le framework Symfony.

Logo Symfony

Prérequis :

  • Avoir un projet Symfony 6
  • Avoir Make d’installé

Créer un Makefile avec Symfony 6 :

Dans un premier temps, nous allons créer le fichier Makefile à la racine du projet.

touch Makefile

Puis nous allons ajouter le contenu suivant dans le fichier Makefile :

# --------------------------------#
# Makefile for the "make" command
# --------------------------------#

# ----- Colors -----
GREEN = /bin/echo -e "\x1b[32m\#\# $1\x1b[0m"
RED = /bin/echo -e "\x1b[31m\#\# $1\x1b[0m"

# ----- Programs -----
COMPOSER = composer
PHP = php
SYMFONY = symfony
SYMFONY_CONSOLE = $(PHP) bin/console
PHP_UNIT = $(PHP) bin/phpunit
NPM = npm

## ----- Project -----
init: ## Initialize the project
	$(MAKE) composer-install
	$(MAKE) npm-install
	$(MAKE) database-init
	@$(call GREEN, "Project initialized!")
	$(MAKE) start

## ----- Composer -----
composer-install: ## Install the dependencies
	@$(call GREEN, "Installing dependencies...")
	$(COMPOSER) install

composer-update: ## Update the dependencies
	@$(call GREEN, "Updating dependencies...")
	$(COMPOSER) update

## ----- NPM -----
npm-install: ## Install the dependencies
	@$(call GREEN, "Installing dependencies...")
	$(NPM) install
	$(MAKE) npm-build

npm-build: ## Build the assets
	@$(call GREEN, "Building assets...")
	$(NPM) run build

## ----- Symfony -----
start: ## Start the project
	@$(call GREEN, "Starting the project...")
	$(SYMFONY) server:start
	@$(call GREEN, "Project started! You can now access it at http://127.0.0.1:8000")

stop: ## Stop the project
	@$(call GREEN, "Stopping the project...")
	$(SYMFONY_CONSOLE) server:stop
	@$(call GREEN, "Project stopped!")

database-create: ## Create the database
	@$(call GREEN, "Creating database...")
	$(SYMFONY_CONSOLE) doctrine:database:create --if-not-exists

database-drop: ## Drop the database
	@$(call GREEN, "Dropping database...")
	$(SYMFONY_CONSOLE) doctrine:database:drop --force --if-exists

database-migrate: ## Migrate the database
	@$(call GREEN, "Migrating database...")
	$(SYMFONY_CONSOLE) doctrine:migrations:migrate --no-interaction

database-rollback: ## Rollback the database
	@$(call GREEN, "Rolling back database...")
	$(SYMFONY_CONSOLE) doctrine:migrations:migrate prev --no-interaction

database-fixtures: ## Load the fixtures
	@$(call GREEN, "Loading fixtures...")
	$(SYMFONY_CONSOLE) doctrine:fixtures:load --no-interaction

database-init: ## Initialize the database
	@$(call GREEN, "Initializing database...")
	$(MAKE) database-drop
	$(MAKE) database-create
	$(MAKE) database-migrate
	$(MAKE) database-fixtures

cache-clear: # Clear the cache
	@$(call GREEN, "Clearing cache...")
	$(SYMFONY_CONSOLE) cache:clear
## ----- Tests -----
tests: ## Run the tests
	@$(call GREEN, "Running tests...")
	$(MAKE) database-init-test
	$(PHP_UNIT)

database-init-test: ## Init database for tests
	@$(call GREEN, "Creating the database for tests...")
	$(SYMFONY_CONSOLE) d:d:d --force --if-exists --env=test
	$(SYMFONY_CONSOLE) d:d:c --env=test --if-not-exists
	$(SYMFONY_CONSOLE) d:m:m --no-interaction --env=test
	$(SYMFONY_CONSOLE) d:f:l --no-interaction --env=test

## ----- Help ----- 
help: ## Display this help
	@$(call GREEN, "Available commands:")
	@grep -E '(^[a-zA-Z0-9_-]+:.*?##.*$$)|(^##)' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}{printf "3[32m%-30s3[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/'

Utilisez la commande suivante pour avoir la liste des commandes :

make help

Ensuite utilisez la commande suivante pour démarrer votre projet :

make init

Sources :

https://fr.wikipedia.org/wiki/Make

Susceptible de vous intéresser :