mkdir monprojet cd monprojet composer create-project laravel/laravel --prefer-dist .
Créer un dossier packages
à la racine du projet puis ajouter un dossier [VENDORNAME]/[PACKAGENAME]
. Exemple : sebastienheyd/monpackage
.
Dans ce dossier ajouter un dossier src
mkdir -p packages/sebastienheyd/monpackage/src
On génère ensuite le composer.json en saisissant la commande :
cd packages/sebastienheyd/monpackage composer init
Dans le fichier composer.json qui vient d'être généré, ne pas oublier de rajouter les lignes pour le PSR-4, exemple :
"autoload": { "psr-4": { "Sebastienheyd\\Monpackage\\": "src/" } },
Une fois fait, on modifie le composer.json à la racine du projet pour déclarer le package :
"minimum-stability": "dev", "repositories": [{ "type": "path", "url": "packages/*/*", "symlink": true }], "require": { // ... "sebastienheyd/monpackage": "*" },
Pour finir on lance :
composer update
Pour créer le service provider :
php artisan make:provider MonpackageServiceProvider
Puis déplacer le fichier généré dans le dossier du package :
mv app/Providers/MonpackageServiceProvider packages/sebastienheyd/monpackage/src
Attention à bien changer le namespace dans le provider par [VENDORNAME]\[PACKAGENAME]
Dans le composer.json du package on ajoute l'autodiscover :
"extra": { "laravel": { "providers": [ "Sebastienheyd\\Monpackage\\MonpackageServiceProvider" ] } }
Pour la suite, voir ici : https://laraveldaily.com/how-to-create-a-laravel-5-package-in-10-easy-steps/