Проекты

Версии Node, bun и PHP

Закрепление версии Node, менеджера пакетов и версии PHP для каждого проекта, с Vite+ и статическими сборками PHP.

Вкладка Среда выполнения (R) показывает, что используют сервер разработки и ваши терминалы в папке проекта, и позволяет это закрепить.

Вкладка «Среда выполнения»: версии Node, менеджера пакетов и PHP проекта

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

Вкладка «Среда выполнения» проекта на PHP: расширения, 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 после проверки контрольной суммы.

getjoppa.com › support

Загрузка

Не отправляется? Напишите на [email protected]. Просто вопрос: [email protected].