erikaraujo / laravel-stubs
Opinionated Laravel stubs with resources
Requires
- php: ^7.4|^8.0
- laravel/framework: ^7.2|^8.0
Requires (Dev)
- mockery/mockery: ^1.4
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-10-16 13:16:43 UTC
README
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
down
function; - model has
with
andfillable
by 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.