webed / seed-flow
SeedFlow - manage seeders like migrations with environment support, rollback, and strict execution order.
Requires
- php: ^8.2
- illuminate/console: ^8.0|^9.0|^10.0|^11.0|^12.0
- illuminate/database: ^8.0|^9.0|^10.0|^11.0|^12.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0|^12.0
README
Русский | English
SeedFlow — Laravel-пакет для управления сидерами как миграциями: строгий порядок, учет выполненных, привязка к среде (env), rollback.
Для чего этот пакет?
Во многих проектах stage/test/prod — это большие “боевые” базы данных. Чтобы новому разработчику начать работу, часто приходится:
- скачивать дамп к себе (долго, тяжело, иногда невозможно);
- или подключаться к удаленной базе, рискуя повлиять на ее стабильность и/или допустить утечку данных.
Это не только неудобно, но и создает существенные риски безопасности и конфиденциальности.
Отсутствие сидеров в проекте — антипаттерн, который заметно замедляет онбординг и усложняет воспроизводимость окружения.
SeedFlow помогает строить разработку и тестирование на искусственных данных:
- данных обычно нужно не много, но они должны покрывать кейсы для удобного ручного/авто тестирования;
- в тестовой базе можно задать “удобные” правила (например, один пароль для всех, email в стиле
user@email.ru); - можно завести отдельные сидеры под test-среду, чтобы не повторять одно и то же в тестах.
Быстрый старт
- Установите пакет
composer config repositories.seed-flow vcs git@github.com:bitcasterx/seed-flow.git composer require webed/seed-flow:^1.0
- Создайте таблицу учета (обычная миграция Laravel)
php artisan migrate
- Создайте сидер для нужной среды
php artisan webed:seedflow:make create_roles_seeder --env=dev
- Запустите сидирование
php artisan webed:seedflow:seed --env=dev
- (опционально) Откатите последний сидер
php artisan webed:seedflow:rollback --env=dev --steps=1
Проверить требования
- PHP 8.2+
- Laravel 8+
Понять структуру
Сидеры лежат по средам:
database/seeders/SeedFlow/dev/database/seeders/SeedFlow/test/database/seeders/SeedFlow/stage/database/seeders/SeedFlow/prod/
Таблица учета:
webed_processed_seeders(id,seeder,env,processed_at)
Создать новый сидер
php artisan webed:seedflow:make <name> --env=dev,stage
- Путь:
database/seeders/SeedFlow/{env}/ - Имя файла:
timestamp_name.php(как у миграций) - Класс: отдельный для каждого env, методы
up()иdown()
Запустить сидирование
php artisan webed:seedflow:seed [--env=dev] [--force]
- env по умолчанию: берется из
APP_ENV - Запускаются только невыполненные сидеры (учет в
webed_processed_seeders) - Строгий порядок: по имени файла (timestamp)
Если в таблице учета обнаружены записи другой среды (например, после импорта базы), выполнение заблокировано и требует флага:
--force
Пример вывода:
2025_01_01_000001_create_roles_seeder ..... ok
Откатить сидеры
php artisan webed:seedflow:rollback [--env=dev] [--steps=3]
- Откатывает последние N сидеров текущей среды
- Вызывает
down()(может быть пустым) - Удаляет запись из
webed_processed_seeders
Rollback возможен только внутри одной env. Если в таблице есть сидеры другой среды → ошибка.
Использовать разные среды разработки
dev: удобные данные для локальной разработки (например, “универсальный пароль”)test: стабильные данные для автотестов/интеграционных проверокstage: данные, близкие к предпрод-окружениюprod: сидирование прод окружения (обычно осторожно и минимально)