This was used as the example for creating a custom Laravel package for my Laravel projects.
Annotations package (laravel 8 support)
composer require laravelcollective/annotations
- a "packages" directory
- Update composer.json PSR-4 with the "packages" path
alias cc='clear;composer dump-autoload; php artisan cache:clear; php artisan view:clear; php artisan config:clear; php artisan config:clear; php artisan route:clear'
alias a_route='php artisan route:clear; php artisan route:scan;php artisan route:list'
packages/
packages/<package-name>/Http
packages/<package-name>/Http/Controllers
packages/<package-name>/Http/Controllers/<package-name>Controller.php
packages/<package-name>/Listeners
packages/<package-name>/Models
packages/<package-name>/Models/<model-name>.php
packages/<package-name>/Models/Logic
packages/<package-name>/Models/Logic/<model-name>Logic.php
packages/<package-name>/Observers
packages/<package-name>/Observers/<model-name>Observer.php
packages/<package-name>/Providers
packages/<package-name>/Providers/<package-name>ServiceProvider.php
packages/<package-name>/Tests
packages/<package-name>/Views
packages/<package-name>/Views/index.blade.php
In app.js
resolve: (name) => {
const matched = /@(.*)::/.exec(name);
if (matched === null) {
return require(`./Pages/${name}`).default;
}
const module = matched[1];
const pageName = name.replace(matched[0], "");
return require(`../../packages/${module}/Assets/Pages/${pageName}.vue`) //in root of project
},