# Un script Bash maison pour configurer un projet WordPress en une commande

> Cloner, installer les dépendances et configurer le wp-config local en une seule commande : un script Bash simple, sans Makefile ni outillage lourd.

- Auteur : Clément Hadrot
- Publié le : 2020-12-07
- Mis à jour le : 2020-12-07
- Catégorie : Outils &amp; workflow
- URL : https://wpmoderne.dev.wordpress-developpement.fr/outils/script-bash-maison-configurer-projet-wordpress/

## L’essentiel

- Une commande pour cloner, installer et configurer
- Aucun outil externe requis
- Adaptable à chaque agence en quelques lignes

Avant ce script, la mise en route d'un nouveau projet WordPress suivait toujours la même série d'étapes manuelles : cloner le dépôt, installer les dépendances Composer, installer les dépendances npm, copier un fichier `wp-config-sample.php`, y renseigner les identifiants de la base locale, importer un dump SQL, et enfin lancer une recherche-remplacement d'URL. Chacune de ces étapes prend peu de temps individuellement, mais leur enchaînement, répété à chaque nouveau projet ou à chaque nouvel arrivant dans l'équipe, finit par représenter une perte de temps cumulée non négligeable.

Plutôt que d'adopter un outil de build complet comme un Makefile ou un gestionnaire de tâches dédié, un simple script Bash suffit à automatiser cette série d'étapes. C'est la solution la plus légère possible : aucune dépendance à installer, aucun langage de configuration à apprendre, juste un fichier exécutable versionné avec le projet.

## Ce que le script doit accomplir

L'objectif est de remplacer une dizaine de commandes manuelles par une seule invocation, capable de fonctionner sur une machine fraîchement clonée sans configuration préalable. Le script prend en argument le nom du projet et se charge de : cloner le dépôt si nécessaire, installer les dépendances PHP et JS, générer un `wp-config.php` local à partir d'un modèle, créer la base de données locale, et importer un dump de démonstration si un fichier est présent.

## Le script, étape par étape

> L'essentiel à retenir : Une commande pour cloner, installer et configurer ; Aucun outil externe requis ; Adaptable à chaque agence en quelques lignes

```
#!/usr/bin/env bash
set -euo pipefail

PROJET="${1:?Usage: ./setup.sh nom-du-projet}"
DB_NOM="wp_${PROJET}"

echo "==> Installation des dépendances Composer"
composer install --no-interaction

echo "==> Installation des dépendances npm"
npm install

echo "==> Génération du wp-config.php local"
if [ ! -f wp-config.php ]; then
  cp wp-config-local.sample.php wp-config.php
  sed -i "s/{{DB_NAME}}/${DB_NOM}/" wp-config.php
fi

echo "==> Création de la base de données"
wp db create --dbname="${DB_NOM}" || echo "Base déjà existante"

if [ -f dump.sql ]; then
  echo "==> Import du dump de démonstration"
  wp db import dump.sql
  wp search-replace 'https://production.exemple' "https://${PROJET}.test" --all-tables
fi

echo "==> Terminé : le site est prêt sur https://${PROJET}.test"
```

Chaque section affiche un message clair, ce qui permet de repérer immédiatement l'étape en cours en cas d'échec. L'option `set -euo pipefail` en tête de script garantit qu'une erreur sur n'importe quelle commande interrompt immédiatement l'exécution, plutôt que de continuer silencieusement sur un état incohérent.

## Rendre le script réutilisable entre projets

Pour éviter de dupliquer ce script dans chaque dépôt, une version générique peut être stockée dans un dossier d'outils partagé de l'agence et appelée depuis chaque projet via un lien symbolique ou une simple copie initiale. La partie spécifique à chaque projet (nom de la base, URL de production à remplacer) reste alors dans un petit fichier de variables versionné avec le projet lui-même :

```
# config-projet.sh
PROJET_URL_PROD="https://production.exemple"
PROJET_DB_PREFIXE="wp_"
```

## Ce que ce script ne remplace pas

- Il ne gère pas l'orchestration de plusieurs services (base, PHP, serveur web) : cela reste la responsabilité de Docker, Local ou d'un environnement déjà en place.
- Il ne propose pas de cibles nommées comme un Makefile (`make test`, `make deploy`) : c'est un script linéaire, pas un outil de tâches multiples.
- Il suppose que WP-CLI est déjà installé sur la machine, sans vérifier ni installer cette dépendance lui-même.

> La règle qu'on applique en interne : si un script Bash dépasse la centaine de lignes ou commence à avoir besoin de sous-commandes, c'est le signal qu'il est temps de migrer vers un outil plus structuré.

## Un gain de temps mesurable

Sur les derniers projets où ce script a été mis en place dès le premier jour, le temps de mise en route d'un environnement local complet est passé d'environ vingt minutes à moins de deux minutes, dump de base compris. Pour un nouvel arrivant dans l'équipe, ce temps gagné compte double : il évite aussi les erreurs de manipulation qui, sur une procédure manuelle, arrivent presque systématiquement au moins une fois (mauvais nom de base, oubli du search-replace, mauvaise URL copiée).

## En résumé

Un script Bash de quelques dizaines de lignes suffit à supprimer l'essentiel de la friction de mise en route d'un projet WordPress, sans introduire de dépendance supplémentaire ni de courbe d'apprentissage pour l'équipe. Ce n'est pas la solution la plus sophistiquée, mais c'est souvent la plus proportionnée au problème réel : automatiser une série de commandes répétitives, pas orchestrer une infrastructure complexe.
