Install Globally:
composer global require laravel-ready/packager --dev
Ensure ~/.composer/vendor/bin is in your PATH.
Initialize a New Package:
mkdir my-package && cd my-package
git init
composer init --type=project --name=vendor/package-name --description="My Awesome Package"
packager new
Follow prompts for package metadata (name, author, description, etc.).
First Use Case:
php artisan vendor:publish --provider="Vendor\PackageName\PackageServiceProvider" to publish stubs (config, migrations, etc.).composer require vendor/package-name.Template-Based Generation:
src/ (PSR-4 compliant classes).config/ (publishable config files).database/migrations/ (if migrations are enabled).resources/views/ (if views are enabled).tests/ (PHPUnit test boilerplate).packager:templates config or extending the PackagerServiceProvider.Integration with Laravel:
PackageServiceProvider (auto-generated).php artisan make:facade for package-specific facades.PackagerCommand or create custom Artisan commands in src/Console.Versioning and Releases:
packager:release to generate changelogs and version tags (if configured).Testing:
php artisan test (PHPUnit) with pre-configured test classes.createApplication() in tests (see tests/TestCase.php).composer.json:
"scripts": {
"post-autoload-dump": "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"post-update-cmd": "php artisan package:discover"
}
packager:install to scaffold dependencies.packager test and packager lint in workflows.Template Overrides:
templates/ (e.g., resources/templates/), ensure they match Packager’s expected structure. Misplaced files may break generation.php artisan packager:clear-cache after template changes.Namespace Conflicts:
composer.json. Mismatched namespaces in src/ or tests/ will cause autoloading errors.autoload.psr-4 in composer.json matches the src/ directory structure.Laravel Version Mismatch:
laravel_version in packager.json or use --laravel-version flag.vendor/laravel/framework compatibility in your package’s composer.json.Published Assets:
php artisan vendor:publish --tag=package-config (or relevant tag) after installation.Global Composer Cache:
packager new fails, clear Composer’s global cache:
composer global clear-cache
packager new --verbose to debug template rendering issues.storage/logs/laravel.log for Packager-related errors during generation.packager new --dry-run to preview changes without writing files.Custom Templates:
templates/ directory in your package root.vendor/laravel-ready/packager/templates/src/ServiceProvider.stub to templates/src/.Hooks:
PackagerServiceProvider to add post-generation tasks:
public function boot()
{
$this->afterPackageGenerated(function () {
// Add custom logic (e.g., git init, run migrations)
});
}
Configuration:
packager.json:
{
"enable_migrations": false,
"enable_tests": true,
"enable_views": true
}
packager new --enable-tests --disable-migrations
Multi-Package Projects:
packager:install with --package flag to scaffold dependent packages:
packager install vendor/dependent-package --package
How can I help you explore Laravel packages today?