Versiones de Node, bun y PHP
Fijar por proyecto la versión de Node, el gestor de paquetes y la versión de PHP, con Vite+ y los builds estáticos de PHP.
La pestaña Runtime (R) muestra lo que el servidor de desarrollo y tus terminales usan en la carpeta del proyecto, y permite fijarlo.

Node y el gestor de paquetes
Joppa se apoya en Vite+, que descarga la versión de Node y el gestor de paquetes (bun, pnpm, npm, yarn) fijados por cada proyecto. No hay nada que instalar: Joppa instala Vite+ en el primer arranque, con Node LTS y bun, y luego lo actualiza cada día. Un Vite+ que ya tengas se aprovecha y se actualiza igual. Mientras se instala, la pestaña y la ventana Nuevo proyecto lo indican; si falla (sin conexión), Reintentar lo vuelve a lanzar.
- Versión de Node: Mantener, Última LTS o una versión concreta.
- Gestor de paquetes y su versión.
- Fijar escribe
.node-versiony el campopackageManagerdepackage.json: todas las terminales y el servidor de desarrollo usan entonces esas versiones (vp env pin).
Joppa lee las versiones en este orden: devEngines, luego un archivo de versión (.node-version, .nvmrc) y luego engines.
Node en tus terminales
Joppa instala Vite+ sin tocar tu perfil del shell. Para que tus terminales tengan node, bun, pnpm, npm y yarn en las versiones fijadas, Ajustes › Node › Usar el Node de Joppa en mis terminales añade este bloque, tras confirmar:
# >>> Joppa (Node) >>>
. "/Users/tu/.config/vite-plus/env"
# <<< Joppa (Node) <<<
El archivo depende de tu shell, como para PHP. Si tu perfil ya carga Vite+ (instalado con su propio comando), el interruptor aparece activado y Joppa no añade nada. Abre un terminal nuevo después del cambio.
PHP
Joppa descarga builds estáticos de PHP (static-php.dev), de la 8.1 a la 8.5, y los guarda en su carpeta.
- Fijar una versión…: elige la versión; Instalar y usar la descarga si hace falta y escribe
.php-versionen la raíz del proyecto. - Quitar fijación elimina
.php-version.
Extensiones
La lista Extensiones muestra lo que contiene el build fijado (php -m): bcmath, curl, gd, mbstring, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, redis, soap, zip… Están compiladas en el binario estático: no hay nada que instalar ni activar, y una extensión que no está en la lista (intl, opcache) no se puede añadir.
El php.ini del proyecto
php.ini del proyecto escribe los ajustes de PHP del proyecto en un archivo .php.ini en su raíz, un ajuste = valor por línea:
memory_limit = 512M
upload_max_filesize = 64M
post_max_size = 64M
Los botones + memory_limit, + upload_max_filesize… añaden los ajustes más habituales. Guardar comprueba el archivo con PHP y luego reinicia los procesos PHP del proyecto que están en marcha. Un campo vacío elimina el archivo.
El comando php de Joppa lee el .php.ini más cercano (esta carpeta o una superior) y se lo pasa a PHP mediante la variable PHPRC: tus terminales, Composer, php artisan serve y los workers lo leen todos. Sin .php.ini, PHP mantiene sus valores por defecto (memory_limit = 128M…). El PHP del sistema no se ve afectado: conserva su propio php.ini. Haz commit del .php.ini para compartirlo con el equipo.
Xdebug

Los builds estáticos de static-php.dev no incluyen Xdebug. Joppa proporciona el suyo, compilado para cada versión de PHP (8.1 a 8.5) y descargado de download.getjoppa.com, con su suma de verificación comprobada, la primera vez que lo necesitas: Instalar Xdebug.
| Ajuste | Efecto |
|---|---|
| Xdebug para los procesos del proyecto | Reinicia los procesos PHP del proyecto con XDEBUG_MODE y XDEBUG_CONFIG |
| Modo | debug (paso a paso), coverage (cobertura de los tests), profile (archivos cachegrind en /tmp), uno o varios |
| Inicio | Bajo demanda: solo con XDEBUG_TRIGGER (extensión Xdebug Helper del navegador, ?XDEBUG_TRIGGER=1, cookie); Siempre: cada petición y cada comando |
| Puerto del IDE | 9003 por defecto, el de Xdebug 3 |
Xdebug solo se carga si XDEBUG_MODE está definido: desactivado, no ralentiza nada. Cada cambio reinicia los procesos PHP en marcha. Los worktrees del proyecto siguen sus ajustes.
En una terminal, el comando php de Joppa carga Xdebug de la misma forma:
XDEBUG_MODE=coverage php artisan test --coverage
XDEBUG_MODE=debug XDEBUG_TRIGGER=1 php artisan app:import
PhpStorm y VS Code
Todo se ejecuta en tu máquina, en la carpeta del proyecto: no hay path mappings que configurar.
- PhpStorm: Settings › PHP › Debug, puerto
9003, y luego Start Listening for PHP Debug Connections (el icono del teléfono). En la primera conexión, acepta el servidor propuesto (tienda.test). - VS Code: la extensión PHP Debug (xdebug.php-debug), con este
launch.json:
{
"version": "0.2.0",
"configurations": [{ "name": "Joppa", "type": "php", "request": "launch", "port": 9003 }]
}
PHP en tus terminales
Joppa pone en su carpeta bin un comando php y un comando composer que leen el .php-version de la carpeta actual (o de una carpeta superior). Para que tus terminales los usen, esta carpeta tiene que estar al principio del PATH.
Añadirlo por mí… (o Ajustes › PHP › Usar el PHP de Joppa en mis terminales) añade este bloque a tu perfil del shell, previa confirmación:
# >>> Joppa (PHP) >>>
export PATH="/Users/tu/Library/Application Support/joppa/bin":"$PATH"
# <<< Joppa (PHP) <<<
| Shell | Archivo modificado |
|---|---|
| zsh | ~/.zshrc |
| bash | ~/.bash_profile (macOS), ~/.bashrc (Linux) |
| fish | ~/.config/fish/conf.d/joppa.fish (con fish_add_path --prepend) |
El bloque se quita desde los mismos ajustes. Abre una terminal nueva después del cambio.
Fuera de los proyectos fijados
Ajustes › PHP › Fuera de los proyectos fijados elige el PHP que se usa en otros sitios: el del sistema o una versión de Joppa.
Composer
Los Ajustes indican qué Composer se usa (el de Joppa o el del sistema). Descargar Composer lo instala en Joppa, tras comprobar su suma de verificación.