erikaraujo/laravel-stubs
| Install | |
|---|---|
composer require erikaraujo/laravel-stubs |
|
| Latest Version: | 1.0.1 |
| PHP: | ^7.4|^8.0 |
| License: | MIT |
| Last Updated: | Apr 16, 2021 |
| Links: | GitHub · Packagist |
Opinionated Laravel stubs with resources for API and InertiaJs
Main stub changes:
- controllers don't extend a base
Controller; - depending on the parameters passed, this also adds resources for controllers;
- migrations don't have a
downfunction; - model has
withandfillableby default; - docblocks have been removed;
Installation
Install the package via composer:
composer require erikaraujo/laravel-stubs --dev
If you want to keep your stubs up to date with every update, add this composer hook to your composer.json file:
"scripts": {
"post-update-cmd": [
"@php artisan erikaraujo-stub:publish --force"
]
}
*note that this has a force parameter, which will make the new stubs overwrite the existing ones on the stubs folder.
Usage
Publish the stubs using this artisan command:
php artisan erikaraujo-stub:publish
Options
--force
php artisan erikaraujo-stub:publish --softdeletes
Unless you use --force, none of the existing stubs inside the ./stubs folder will be replaced.
--softdeletes
php artisan erikaraujo-stub:publish --softdeletes
This will automatically add the SoftDeletes trait to your model stubs, add $table->softdeletes() to your migration stubs and add forceDelete() and restore() methods to the controllers.
--inertia
php artisan erikaraujo-stub:publish --inertia
This will import Inertia\Inertia to all your non-api controller stubs by default as well as add resources to the controllers methods (if a model is provided).
Resource example:
public function index()
{
return Inertia::render('{{ model }}/Index', [
'{{ modelVariable }}' => {{ model }}::paginate()->onEachSide(1),
]);
}
--json
php artisan erikaraujo-stub:publish --json
This will add resources to all your api controllers and return a json response with the correct HTTP response code.
Resource example:
public function index()
{
${{ modelVariable }} = {{ model }}::all();
return response()->json([
'data' => ${{ modelVariable }},
'total' => ${{ modelVariable }}->count(),
], 200);
}
- Multiple You can mix and match these options and everything will be applied correctly. All examples below are fine:
php artisan erikaraujo-stub:publish --inertia --softdeletes
php artisan erikaraujo-stub:publish --json --softdeletes
php artisan erikaraujo-stub:publish --json --inertia --softdeletes
php artisan erikaraujo-stub:publish --json --inertia --softdeletes --force
Testing
TODO: Add testing to cover all possible mix and match scenarios.
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
For now, just create a PR and I'll take a look.