diff --git a/src/IgnitionServiceProvider.php b/src/IgnitionServiceProvider.php index df2cb0b4..0e2b7599 100644 --- a/src/IgnitionServiceProvider.php +++ b/src/IgnitionServiceProvider.php @@ -39,6 +39,7 @@ use Facade\Ignition\SolutionProviders\MissingAppKeySolutionProvider; use Facade\Ignition\SolutionProviders\MissingColumnSolutionProvider; use Facade\Ignition\SolutionProviders\MissingImportSolutionProvider; +use Facade\Ignition\SolutionProviders\MissingMixManifestSolutionProvider; use Facade\Ignition\SolutionProviders\MissingPackageSolutionProvider; use Facade\Ignition\SolutionProviders\RunningLaravelDuskInProductionProvider; use Facade\Ignition\SolutionProviders\SolutionProviderRepository; @@ -371,6 +372,7 @@ protected function getDefaultSolutions(): array MissingColumnSolutionProvider::class, UnknownValidationSolutionProvider::class, UndefinedPropertySolutionProvider::class, + MissingMixManifestSolutionProvider::class, ]; } diff --git a/src/SolutionProviders/MissingMixManifestSolutionProvider.php b/src/SolutionProviders/MissingMixManifestSolutionProvider.php new file mode 100644 index 00000000..1f3ac216 --- /dev/null +++ b/src/SolutionProviders/MissingMixManifestSolutionProvider.php @@ -0,0 +1,25 @@ +getMessage(), 'The Mix manifest does not exist'); + } + + public function getSolutions(Throwable $throwable): array + { + return [ + BaseSolution::create('Missing Mix Manifest File') + ->setSolutionDescription('Did you forget to run `npm install && npm run dev`?'), + ]; + } +} diff --git a/tests/Solutions/MixManifestNotFoundSolutionProviderTest.php b/tests/Solutions/MixManifestNotFoundSolutionProviderTest.php new file mode 100644 index 00000000..5ad91325 --- /dev/null +++ b/tests/Solutions/MixManifestNotFoundSolutionProviderTest.php @@ -0,0 +1,31 @@ +canSolve(new Exception('The Mix manifest does not exist.')); + + $this->assertTrue($canSolve); + } + + /** @test */ + public function it_can_recommend_running_npm_install_and_npm_run_dev() + { + /** @var \Facade\IgnitionContracts\Solution $solution */ + $solution = app(MissingMixManifestSolutionProvider::class) + ->getSolutions(new Exception('The Mix manifest does not exist.'))[0]; + + $this->assertTrue(Str::contains($solution->getSolutionDescription(), 'Did you forget to run `npm install && npm run dev`?')); + } +}