Версии Node, bun и PHP
Закрепление версии Node, менеджера пакетов и версии PHP для каждого проекта, с Vite+ и статическими сборками PHP.
Вкладка Среда выполнения (R) показывает, что используют сервер разработки и ваши терминалы в папке проекта, и позволяет это закрепить.

Node и менеджер пакетов
Joppa работает через Vite+, который скачивает версию Node и менеджер пакетов (bun, pnpm, npm, yarn), закреплённые каждым проектом. Ничего устанавливать не нужно: Joppa устанавливает Vite+ при первом запуске вместе с Node LTS и bun, а затем обновляет его каждый день. Уже установленный Vite+ подхватывается и обновляется так же. Во время установки вкладка и окно Новый проект сообщают об этом; если установка не удалась (нет сети), Повторить запускает её снова.
- Версия Node: Не менять, Последняя LTS (с номером и названием линейки, например
24.22.0 Krypton) или конкретная версия; самая новая линейка, ещё без названия, помечена Current. - Менеджер пакетов и его версия.
- Закрепить записывает
.node-versionи полеpackageManagerвpackage.json: после этого все терминалы и сервер разработки используют эти версии (vp env pin).
Joppa читает версии в таком порядке: devEngines, затем файл версии (.node-version, .nvmrc), затем engines.
Node в ваших терминалах
Joppa устанавливает Vite+, не трогая профиль вашей оболочки. Чтобы в ваших терминалах были node, bun, pnpm, npm и yarn закреплённых версий, Настройки › Node › Использовать Node от Joppa в моих терминалах после подтверждения добавляет такой блок:
# >>> Joppa (Node) >>>
. "/Users/you/.config/vite-plus/env"
# <<< Joppa (Node) <<<
Изменяемый файл зависит от оболочки, как и для PHP. Если ваш профиль уже загружает Vite+ (установленный его собственной командой), переключатель включён, и Joppa ничего не добавляет. После изменения откройте новый терминал.
PHP
Joppa скачивает статические сборки PHP (static-php.dev) с 8.1 по 8.5 и хранит их в своей папке.
Если версия, которую требует проект (.php-version, иначе composer.json), не установлена в Joppa, вверху страницы проекта об этом сообщает жёлтый баннер с указанием причины: иначе его процессы запустили бы PHP из оболочки (и Joppa уточняет, если тот не запускается, например после удаления Herd). Установить PHP … скачивает её в один клик.
- Закрепить версию…: выберите версию; Установить и использовать при необходимости скачивает её и записывает
.php-versionв корень проекта. - Открепить удаляет
.php-version. - Без
.php-versionстрока версии Joppa по умолчанию помечена используется; Закрепить записывает её в.php-version. - Меню каждой строки выбирает версию: линейку (
8.4, которая следует за самой новой установленной) или точную версию (8.4.22), записываемую в.php-versionкак есть. Когда выходит версия новее закреплённой точной, Закрепить 8.4.23 скачивает её и обновляет.php-version.
Расширения
Список Расширения показывает, что входит в закреплённую сборку (php -m): bcmath, curl, gd, mbstring, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, redis, soap, zip… Они встроены в статический бинарник: ничего не нужно устанавливать или включать, а расширение, которого нет в списке (intl, opcache), добавить нельзя.
php.ini проекта
php.ini проекта записывает настройки PHP проекта в файл .php.ini в его корне, по одной «настройка = значение» в строке:
memory_limit = 512M
upload_max_filesize = 64M
post_max_size = 64M
Кнопки + memory_limit, + upload_max_filesize… добавляют самые частые настройки. Сохранить проверяет файл с помощью PHP, затем перезапускает работающие PHP-процессы проекта. Пустое поле удаляет файл.
Команда php от Joppa читает ближайший .php.ini (в этой папке или в родительской) и передаёт его PHP через переменную PHPRC: его читают ваши терминалы, Composer, php artisan serve и воркеры. Без .php.ini PHP использует значения по умолчанию (memory_limit = 128M…). Системный PHP это не затрагивает: у него остаётся свой php.ini. Закоммитьте .php.ini, чтобы поделиться им с командой.
Xdebug

В статических сборках static-php.dev нет Xdebug. Joppa предоставляет свой, собранный для каждой версии PHP (с 8.1 по 8.5) и скачиваемый с download.getjoppa.com с проверкой контрольной суммы, когда он впервые понадобится: Установить Xdebug.
| Настройка | Действие |
|---|---|
| Xdebug для процессов этого проекта | Перезапускает PHP-процессы проекта с XDEBUG_MODE и XDEBUG_CONFIG |
| Режим | debug (пошаговая отладка), coverage (покрытие тестами), profile (файлы cachegrind в /tmp), один или несколько |
| Запуск | По требованию: только с XDEBUG_TRIGGER (расширение браузера Xdebug Helper, ?XDEBUG_TRIGGER=1, cookie); Всегда: каждый запрос и каждая команда |
| Порт IDE | по умолчанию 9003, порт Xdebug 3 |
Xdebug загружается, только если задан XDEBUG_MODE: выключенный, он ничего не замедляет. Каждое изменение перезапускает работающие PHP-процессы. Worktree проекта следуют его настройкам.
В терминале команда php от Joppa загружает Xdebug так же:
XDEBUG_MODE=coverage php artisan test --coverage
XDEBUG_MODE=debug XDEBUG_TRIGGER=1 php artisan app:import
PhpStorm и VS Code
Всё работает на вашем компьютере, в папке проекта: path mappings настраивать не нужно.
- PhpStorm: Settings › PHP › Debug, порт
9003, затем Start Listening for PHP Debug Connections (значок телефона). При первом подключении примите предложенный сервер (shop.test). - VS Code: расширение PHP Debug (xdebug.php-debug) с таким
launch.json:
{
"version": "0.2.0",
"configurations": [{ "name": "Joppa", "type": "php", "request": "launch", "port": 9003 }]
}
PHP в ваших терминалах
Joppa кладёт в свою папку bin команды php и composer, которые читают .php-version текущей папки (или родительской). Чтобы ваши терминалы использовали их, эта папка должна стоять первой в PATH.
Добавить за меня… (или Настройки › PHP › Использовать PHP из Joppa в моих терминалах) после подтверждения добавляет в профиль вашей оболочки такой блок:
# >>> Joppa (PHP) >>>
export PATH="/Users/you/Library/Application Support/joppa/bin":"$PATH"
# <<< Joppa (PHP) <<<
| Оболочка | Изменяемый файл |
|---|---|
| zsh | ~/.zshrc |
| bash | ~/.bash_profile (macOS), ~/.bashrc (Linux) |
| fish | ~/.config/fish/conf.d/joppa.fish (с fish_add_path --prepend) |
Блок удаляется в тех же настройках. После изменения откройте новый терминал.
Вне проектов с закреплённой версией
Настройки › PHP › Вне проектов с закреплённой версией выбирает PHP, который используется в остальных местах: системный или одну из версий Joppa.
Composer
В настройках видно, какой Composer используется (от Joppa или системный). Скачать Composer устанавливает его в Joppa после проверки контрольной суммы.