Evo Package Manager: Пакеты — без головной боли, слёз и терминала

«Устанавливайте пакеты, а не проблемы» — наш девиз. И да, это работает.

Представьте: вы сделали крутой модуль (читать тут) для EvolutionCME CE 3 - Feature Flags, радостно потёрли руки... и тут осознали:

«Опа-па, а как это теперь установить? Через консоль? Серьёзно? В 2026 году?»

А ещё есть коллеги, которые любят кликать, а не печатать, боятся слов «composer», «artisan» и «миграции» в одном предложении, и просто хотят, чтобы «работало».

Так и родился Evo Package Manager — модуль, который делает установку пакетов в EvolutionCMS такой же простой, как заказать пиццу.

Смотреть код на git.

Что это вообще такое?

Evo Package Manager — это ваш личный «менеджер по установке пакетов» для EvolutionCMS CE 3.

  1. Выбрал пакет в админке
  2. Указал версию
  3. Нажал «Установить»
  4. Готово! Миграции, конфиги, ассеты — всё на своих местах.

И да, консоль тоже поддерживается. Для тех, кто скучает по терминалу.

Что внутри? (спойлер: много вкусного)

Установка в два клика (или одну команду)

Способ Как Для кого
Админка Модули → 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)

Через админку:

  1. Откройте Модули → Evo Package Manager
  2. Нажмите «Установить пакет»
  3. Введите:
    • Имя: ambrion/evocms-feature-flags
    • Версия: *
  4. Нажмите «Установить»
  5. Моргните пару раз — модуль всё сделает сам

Через консоль (для ценителей):

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+
  • Хорошее настроение разработчика ✨

На связи

Нашли баг? Есть идея? Хотите просто поболтать о пакетах?

Отвечаю быстро, потому что тоже люблю, когда всё работает.

P.S. Если вы дочитали до конца — Вы Герой. Напишите мне удобным способом и получите в ответ — ответ. 🎁

Обсуждение

💬 Есть вопросы? Пишите в Telegram-канал или на ping@ambrion.dev