Я написал пользовательскую команду Artisan (назовем ее MyDusk.php
), которая расширяет/абстрагирует некоторые функции базовой команды Dusk.
Эта пользовательская команда расширяет Laravel\Dusk\Console\DuskCommand
из пакета Dusk.
Проблема в том, что на производстве пакет Dusk не установлен (он находится под require-dev
в composer.json
)
Поэтому, когда композитор создает свои файлы автозагрузки на производстве, он выдает ошибку, когда доходит до MyDusk.php
, потому что не может найти Laravel\Dusk\Console\DuskCommand
.
PHP Fatal error: Class 'Laravel\Dusk\Console\DuskCommand' not found in app/Console/Commands/Dusk.php on line 10
In Dusk.php line 10:
Class 'Laravel\Dusk\Console\DuskCommand' not found
Я попытался переместить пакет Dusk в require
, чтобы он был доступен в рабочей среде (я знаю, что это не идеально), но в основном поставщике услуг Dusk есть строка, которая создает исключение при запуске в рабочей среде, предотвращая это:
# From: vendor/laravel/dusk/src/DuskServiceProvider.php
if ($this->app->environment('production')) {
throw new Exception('It is unsafe to run Dusk in production.');
}
Я пытаюсь придумать самое элегантное решение, позволяющее сделать мою пользовательскую команду Dusk частью приложения и доступной локально, не вызывая ошибок в рабочей среде.
Одна идея: написать мою команду Dusk как отдельный пакет, это тоже только в require-dev.
Любые другие идеи?