Harness: ручная проверка пакета

← Типы контента · Назад к README

Yazar — голый Composer-пакет: в репозитории нет app/, bootstrap/, public/, artisan, поэтому его нельзя запустить как приложение прямо здесь. Harness — это Laravel-приложение в подпапке harness/, которое даёт такую возможность локально, не превращая репозиторий пакета обратно в Laravel-скелет.

Что это и почему так

Это тот же механизм (path-repository + symlink: true), которым пакет устанавливается в README у реального стороннего потребителя — разница только в том, что harness живёт внутри самого репозитория пакета и предназначен для разработчика, а не для конечного пользователя.

Предварительные требования

Быстрый старт

bin/harness-init.sh
cd harness
php artisan yazar:install
php artisan migrate
php artisan build
php artisan serve

Что делает bin/harness-init.sh

if [ ! -d harness ]; then
    composer create-project laravel/laravel harness "^12.0"
    composer config --working-dir=harness repositories.yazar '{"type":"path","url":"../","options":{"symlink":true}}' --json
    composer require --working-dir=harness seryak/yazar:dev-master
else
    composer update --working-dir=harness seryak/yazar
fi

Версия "^12.0" обязательна. Она совпадает со старшей версией illuminate/*, которую требует composer.json пакета. Без неё composer create-project ставит последнюю версию Laravel вообще (на момент написания — 13.x), а composer require seryak/yazar:dev-master в такой harness падает с ошибкой resolve-конфликта (illuminate/console ^12.0 vs уже установленный laravel/framework ^13.x). Если пакет когда-нибудь перейдёт на Laravel 13, эту версию в скрипте нужно поднять вместе с composer.json.

Сброс harness

harness/ безопасно удалять в любой момент — она не в git и не содержит ничего, что нужно репозиторию пакета:

rm -rf harness
bin/harness-init.sh

Полезно, если harness оказался в неконсистентном состоянии (например, composer.json внутри неё был испорчен вручную, или она была создана до фикса версии Laravel и содержит несовместимый laravel/framework) — скрипт не чинит существующую конфигурацию, только переиспользует её или создаёт с нуля.

Ограничения

Смотри также