Projets

Versions de Node, bun et PHP

Épingler par projet la version de Node, le gestionnaire de paquets et la version de PHP, avec Vite+ et les builds statiques de PHP.

L’onglet Runtime (R) montre ce que le serveur de dev et vos terminaux utilisent dans le dossier du projet, et permet de l’épingler.

L’onglet Runtime : versions de Node, du gestionnaire de paquets et de PHP du projet

Node et le gestionnaire de paquets

Joppa passe par Vite+, qui télécharge la version de Node et le gestionnaire de paquets (bun, pnpm, npm, yarn) épinglés par chaque projet. Rien à installer : Joppa installe Vite+ au premier lancement, avec Node LTS et bun, puis le met à jour chaque jour. Un Vite+ déjà présent est repris et mis à jour de la même façon. Pendant l’installation, l’onglet et la fenêtre Nouveau projet l’indiquent ; si elle échoue (hors ligne), Réessayer la relance.

  • Version de Node : Garder, Dernière LTS ou une version précise.
  • Gestionnaire de paquets et sa version.
  • Épingler écrit .node-version et le champ packageManager de package.json : tous les terminaux et le serveur de dev utilisent alors ces versions (vp env pin).

Joppa lit les versions dans cet ordre : devEngines, puis un fichier de version (.node-version, .nvmrc), puis engines.

Node dans vos terminaux

Joppa installe Vite+ sans toucher à votre profil de shell. Pour que vos terminaux aient node, bun, pnpm, npm et yarn dans les versions épinglées, Réglages › Node › Utiliser le Node de Joppa dans mes terminaux ajoute ce bloc, après confirmation :

# >>> Joppa (Node) >>>
. "/Users/vous/.config/vite-plus/env"
# <<< Joppa (Node) <<<

Le fichier modifié dépend du shell, comme pour PHP. Si votre profil charge déjà Vite+ (installé avec sa propre commande), l’interrupteur est activé et Joppa n’ajoute rien. Ouvrez un nouveau terminal après le changement.

PHP

Joppa télécharge des builds statiques de PHP (static-php.dev), de 8.1 à 8.5, et les range dans son dossier.

  • Épingler une version… : choisissez la version ; Installer et utiliser la télécharge si besoin et écrit .php-version à la racine du projet.
  • Retirer l’épinglage supprime .php-version.

Extensions

La liste Extensions montre ce que contient le build épinglé (php -m) : bcmath, curl, gd, mbstring, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, redis, soap, zip… Elles sont compilées dans le binaire statique : il n’y a rien à installer ni à activer, et une extension absente de la liste (intl, opcache) ne peut pas être ajoutée.

Le php.ini du projet

php.ini du projet écrit les réglages de PHP du projet dans un fichier .php.ini à sa racine, un réglage = valeur par ligne :

memory_limit = 512M
upload_max_filesize = 64M
post_max_size = 64M

Les boutons + memory_limit, + upload_max_filesize… ajoutent les réglages les plus courants. Enregistrer vérifie le fichier avec PHP, puis relance les processus PHP du projet qui tournent. Un champ vide supprime le fichier.

La commande php de Joppa lit le .php.ini le plus proche (ce dossier ou un parent) et le passe à PHP par la variable PHPRC : vos terminaux, Composer, php artisan serve et les workers le lisent tous. Sans .php.ini, PHP garde ses valeurs par défaut (memory_limit = 128M…). Le PHP du système n’est pas concerné : il garde son propre php.ini. Commitez le .php.ini pour le partager avec l’équipe.

Xdebug

L’onglet Runtime d’un projet PHP : extensions, php.ini du projet et Xdebug

Les builds statiques de static-php.dev n’ont pas Xdebug. Joppa fournit le sien, compilé pour chaque version de PHP (8.1 à 8.5) et téléchargé depuis download.getjoppa.com, avec sa somme de contrôle vérifiée, la première fois que vous en avez besoin : Installer Xdebug.

Réglage Effet
Xdebug pour les processus du projet Relance les processus PHP du projet avec XDEBUG_MODE et XDEBUG_CONFIG
Mode debug (pas à pas), coverage (couverture des tests), profile (fichiers cachegrind dans /tmp), un ou plusieurs
Déclenchement À la demande : seulement avec XDEBUG_TRIGGER (extension Xdebug Helper du navigateur, ?XDEBUG_TRIGGER=1, cookie) ; Toujours : chaque requête et chaque commande
Port de l’IDE 9003 par défaut, celui de Xdebug 3

Xdebug n’est chargé que si XDEBUG_MODE est défini : désactivé, il ne ralentit rien. Chaque changement relance les processus PHP qui tournent. Les worktrees du projet suivent ses réglages.

Dans un terminal, la commande php de Joppa charge Xdebug de la même façon :

XDEBUG_MODE=coverage php artisan test --coverage
XDEBUG_MODE=debug XDEBUG_TRIGGER=1 php artisan app:import

PhpStorm et VS Code

Tout tourne sur votre machine, dans le dossier du projet : pas de path mappings à régler.

  • PhpStorm : Settings › PHP › Debug, port 9003, puis Start Listening for PHP Debug Connections (l’icône du téléphone). À la première connexion, acceptez le serveur proposé (boutique.test).
  • VS Code : l’extension PHP Debug (xdebug.php-debug), avec ce launch.json :
{
  "version": "0.2.0",
  "configurations": [{ "name": "Joppa", "type": "php", "request": "launch", "port": 9003 }]
}

PHP dans vos terminaux

Joppa met dans son dossier bin une commande php et une commande composer qui lisent le .php-version du dossier courant (ou d’un parent). Pour que vos terminaux les utilisent, ce dossier doit être en tête du PATH.

Ajouter pour moi… (ou Réglages › PHP › Utiliser le PHP de Joppa dans mes terminaux) ajoute ce bloc à votre profil de shell, après confirmation :

# >>> Joppa (PHP) >>>
export PATH="/Users/vous/Library/Application Support/joppa/bin":"$PATH"
# <<< Joppa (PHP) <<<
Shell Fichier modifié
zsh ~/.zshrc
bash ~/.bash_profile (macOS), ~/.bashrc (Linux)
fish ~/.config/fish/conf.d/joppa.fish (avec fish_add_path --prepend)

Le bloc se retire depuis les mêmes réglages. Ouvrez un nouveau terminal après le changement.

Hors des projets épinglés

Réglages › PHP › Hors des projets épinglés choisit le PHP utilisé ailleurs : celui du système ou une version de Joppa.

Composer

Les Réglages indiquent quel Composer est utilisé (celui de Joppa ou du système). Télécharger Composer l’installe dans Joppa, après vérification de sa somme de contrôle.

getjoppa.com › support

Chargement

Ça ne passe pas ? Écrivez à [email protected]. Une simple question : [email protected].