Что это вообще такое?
Evo Package Manager — это ваш личный «менеджер по установке пакетов» для EvolutionCMS CE 3.
- Выбрал пакет в админке
- Указал версию
- Нажал «Установить»
- Готово! Миграции, конфиги, ассеты — всё на своих местах.
И да, консоль тоже поддерживается. Для тех, кто скучает по терминалу.
Что внутри? (спойлер: много вкусного)
Установка в два клика (или одну команду)
| Способ | Как | Для кого |
|---|---|---|
| Админка | Модули → Evo Package Manager → Заполнить форму → Установить | Все, кто любит кнопки |
| Консоль | php artisan evo:package:install vendor/package "*" |
Те, кто скучает по терминалу |
Одна логика — два интерфейса. Меняете в одном месте — работает везде.
Пост-инсталляция: «нажал и забыл»
Модуль сам знает, что делать после установки пакета:
| Шаг | Что делает | Зачем |
|---|---|---|
| Регистрация провайдера | $provider->register() + boot() |
Чтобы пакет «познакомился» с приложением |
| Публикация файлов | vendor:publish --provider=... |
Конфиги, ассеты, сниппеты — раскладываются по полочкам |
| Миграции | artisan migrate --path=... |
Таблицы создаются, вы пьёте кофе |
| Очистка кэша | cache:clear |
Новые настройки подхватываются сразу |
| Автолоадер | composer dump-autoload --optimize |
Классы находятся без танцев с бубном |
Всё это — автоматически. Без ваших действий. Магия? Нет, просто хороший код.
Единый реестр пакетов
Забудьте про «а какой версии у меня стоит этот пакет?». Модуль ведёт аккуратный учёт:
- Таблица в БД с историей установок
- Просмотр версии, даты, статуса
- Быстрая ссылка на документацию (в планах)
Быстрый старт: «хочу прямо сейчас»
Шаг 1: Установите сам модуль
# Переходим в папку ядра
cd /core
# Устанавливаем менеджер пакетов (через консоль, да, один раз придётся)
php artisan package:installrequire ambrion/evocms-evo-package-manager "v0.1.0-alpha"
# Публикуем конфиги и миграции
php artisan vendor:publish --provider="EvolutionCMS\EvoPackageManager\EvoPackageManagerServiceProvider"
php artisan migrate
Шаг 2: Проверьте, что всё работает
php artisan list | grep evo:package
Ожидайте что-то вроде:
evo:package:install Install composer package with post-install automation
evo:package:list List installed packages from the registry
evo:package:remove Remove a package...
evo:package:sync Sync installed packages...
Если видите — поздравляем, вы на коне!
Шаг 3: Установите первый пакет (например, Feature Flags)
Через админку:
- Откройте Модули → Evo Package Manager
- Нажмите «Установить пакет»
- Введите:
- Имя:
ambrion/evocms-feature-flags - Версия:
*
- Имя:
- Нажмите «Установить»
- Моргните пару раз — модуль всё сделает сам
Через консоль (для ценителей):
php artisan evo:package:install ambrion/evocms-feature-flags "*"
Шаг 4: Наслаждайтесь
Готово! Вы только что установили пакет, не написав ни одной команды вручную (если выбрали админку).
Полезные команды (для тех, кто всё же любит терминал)
Список установленных пакетов
# Все пакеты
php artisan evo:package:list
# Только активные библиотеки с Packagist
php artisan evo:package:list --status=active --type=library --source=packagist
# JSON для скриптов (автоматизация, привет!)
php artisan evo:package:list --format=json --limit=100
# Просто количество (быстро и по делу)
php artisan evo:package:list --count
# Пагинация, если пакетов много как звёзд на небе
php artisan evo:package:list --limit=20 --offset=40
Пример вывода:
+--------------------------------+-----------+----------+-------------+
| Package | Version | Status | Installed |
+--------------------------------+-----------+----------+-------------+
| ambrion/evocms-feature-flags | v1.2.0 | active | 2026-05-23 |
| vendor/another-package | ^2.0 | active | 2026-05-20 |
+--------------------------------+-----------+----------+-------------+
Удаление пакета (осторожно, необратимо!)
php artisan evo:package:remove vendor/package-name
vendor:publish и таблицы от миграций пока не удаляются автоматически. Это как снять обои со стены — стену-то почистить надо отдельно. Планирую добавить в следующих версиях.
Синхронизация реестра
# Синхронизировать всё
php artisan evo:package:sync
# Или один конкретный пакет
php artisan evo:package:sync vendor/new-pkg
Зачем это нужно:
- Привести БД в соответствие с
composer/installed.json - Восстановить записи после ручных правок
- Добавить пакеты, установленные «в обход» модуля
Для разработчиков пакетов: настройте пост-инсталляцию
Хотите, чтобы ваш пакет устанавливался «из коробки»? Добавьте в composer.json:
{
"name": "vendor/your-package",
"extra": {
"laravel": {
"providers": [
"Vendor\\YourPackage\\YourPackageServiceProvider"
]
},
"evo": {
"post-install": {
"publish": {
"provider": "Vendor\\YourPackage\\YourPackageServiceProvider",
"tags": ["config", "assets"]
},
"migrate": {
"run": true,
"force": false
},
"commands": [
"cache:clear",
"config:clear"
]
}
}
}
}
Поддерживаемые шаги
| Шаг | Описание | Параметры |
|---|---|---|
| publish | Публикация файлов через vendor:publish |
provider (обяз.), tags (опц.) |
| migrate | Запуск миграций | run (bool), force (bool) |
seed (выполнение сидеров) и commands (произвольные Artisan-команды).
Пропуск шагов при установке
# Пропустить ВСЮ пост-инсталляцию (для смелых)
php artisan evo:package:install vendor/package "*" --skip-post-install
# В будущем (планируется):
# Пропустить только миграции
php artisan evo:package:install vendor/package "*" --skip-migrate
# Пропустить только публикацию файлов
php artisan evo:package:install vendor/package "*" --skip-publish
Для кого этот модуль?
| Вы... | Это для вас? |
|---|---|
| Разрабатываете пакеты для EvolutionCMS | Автоматизируйте рутину, радуйте пользователей |
| Устанавливаете готовые решения | Не нужно гуглить команды — всё в админке |
| Работаете в команде с разным опытом | Веб-интерфейс понятен даже тем, кто боится консоли |
| Цените порядок и предсказуемость | Единый реестр, логирование, контроль |
Частые вопросы (которые вы ещё не задали, но уже есть ответы)
❓ А если что-то пойдёт не так?
→ Что значит "если"?! Это же альфа-версия! Ошибки, вроде, не ломают весь процесс — модуль сообщит, что случилось, и предложит решение (может быть, потом, когда-нибудь даже на всё (42)).
❓ А можно установить пакет, которого нет в реестре?
→ Да! Модуль работает с любым пакетом, доступным через Composer. Реестр — это просто удобная «история установок».
❓ А если я уже установил пакет вручную?
→ Запустите php artisan evo:package:sync — модуль «подхватит» его и добавит в реестр.
❓ А работает ли это на продакшене?
→ Да, но с умом: таймауты, обработка ошибок, логирование. И да, рекомендую тестировать на staging перед продом. Как и всё в жизни.
Что в планах? (дорожная карта, но без скучных слов)
- Магазин дополнений — каталог проверенных пакетов прямо в админке
- Уведомления — «Пакет обновился! Хотите применить?»
- Автообновления — «Установить последние версии всех пакетов» (с осторожностью!)
- Тестовый режим — «Покажи, что будет, но не делай»
- Мультиязычность — потому что мир большой, а разработчики — разные (сейчас доступен русский и английский)
Вместо заключения
«Раньше: гуглил команды, боялся сломать прод, просил админа запустить миграции.
Теперь: выбрал пакет в админке → нажал кнопку → работаю.»
Evo Package Manager — это не просто утилита. Это шаг к тому, чтобы работа с пакетами в EvolutionCMS была такой же удобной, как в современных фреймворках. Без магии, без сюрпризов — просто надёжный инструмент.
И да, он бесплатный. Потому что хорошие вещи должны быть доступны всем. 💙
Evo Package Manager — потому что разработчики заслуживают удобных инструментов.
Протестировано на:
- EvolutionCMS CE 3.1.30
- PHP 8.3+
- Хорошее настроение разработчика ✨
На связи
Нашли баг? Есть идея? Хотите просто поболтать о пакетах?
- Telegram-канал
- ping@ambrion.dev
- GitHub Issues — для багов и фич
Отвечаю быстро, потому что тоже люблю, когда всё работает.