Fresh Package - це новий скелет для Laravel-пакетів від Mazen Touati, який пропонує готову структуру для швидкого старту розробки якісних пакетів. Він надає опціональний набір інструментів для тестування, статичного аналізу, continuous integration, workbench-додаток та шаблони навичок Laravel Boost для AI-агентів. Скелет підтримує як backend-only, так і full-stack пакети.
Що входить до складу
Пакет, створений на основі Fresh, автоматично включає:
- PHPUnit, Larastan, Rector та Pint з підтримкою Paratest для паралельного запуску тестів
- Workbench-додаток (
workbench/) на базі Orchestra Testbench, який дозволяє запустити пакет командою composer serve та протестувати його без створення окремого host-додатку
- Перемикач версій Laravel з командами
composer switch:l12 та composer switch:l13 для локальної перевірки сумісності з обома підтримуваними major-версіями
- GitHub Actions з матрицею тестування для PHP 8.3-8.5 та Laravel 12-13, інтеграцією Codecov, статичним аналізом, автоматичними виправленнями Pint і Rector, а також автоматичними релізами через release-please
- Frontend на Vue 3, Tailwind v4, Vite та TypeScript з власними workflows для ESLint, Prettier, Vitest та перевірки типів
- Налаштування репозиторію: Dependabot, шаблон issue, файл funding та security policy
- AI-інструкції та навички для самого репозиторію пакета, плюс опціональний stub навички Laravel Boost для додатків, які встановлюють цей пакет
Створення пакета
Щоб створити новий пакет на основі Fresh, використовуйте наступні команди:
composer create-project sunchayn/fresh-package my-package
cd my-package
Під час виконання composer install запускається майстер налаштування, який збирає деталі про пакет та запитує, які функції ви хочете використовувати.
Кожен prompt має відповідний прапорець, тому ви можете пропустити інтерактивний режим у скрипті або CI-задачі:
php .template/init template:init --no-interaction \
--package-name=acme/webhooks \
--vendor-namespace=Acme \
--class-name=Webhooks \
--config --routes --migrations --commands \
--no-blade --no-translations --no-facade --no-assets \
--no-vue --no-funding
Структура директорій
Скелет Fresh організовує код за доменами, а не за типами:
src/
Http/Greeting/
Controllers/GreetingController.php
Requests/GreetingRequest.php
Resources/GreetingResource.php
Modules/Greeting/
Actions/BuildGreetingAction.php
DataTransferObjects/GreetingData.php
Enums/GreetingTone.php
Такий підхід групує пов'язані класи разом за функціональністю, а не розкидає їх по різних папках за типом.
Інтеграція з AI
Якщо ви зберігаєте опцію підтримки AI, пакет включає навичку scaffold-module, яка забезпечує дотримання тієї ж структури директорій, коли AI-агент додає нову функцію. Додаткові навички create-dto-action, write-php-test та task-finalization охоплюють решту змін.
Fresh також включає окрему опцію навички Boost, яка додає stub у resources/boost/skills/. Додатки, які встановлюють ваш пакет, отримають інструкції та навички для роботи з пакетом безпосередньо в Laravel Boost.
Додаткові ресурси
Якщо ви новачок у розробці пакетів, гайд "Building your own Laravel packages" пояснює, як створити Laravel-пакет з нуля.
Дізнатися більше про Fresh Package skeleton можна на GitHub.