| name | laravel-packages |
| description | Package development and extraction of reusable code. Use when working with package development, code reusability, or when user mentions packages, composer packages, extract package, reusable code, package development. |
Laravel Packages
Package development: extracting reusable patterns for use across projects.
Related guides:
- package-extraction.md - Extracting code into packages
- DTOs - Using Spatie Laravel Data
- Models - Using Spatie Model States and Query Builder
When to Extract
Extract to package when:
- Pattern used in 3+ projects
- Code is stable and well-tested
- Pattern has clear boundaries
- Maintenance cost justified
→ Complete extraction guide: package-extraction.md
Package Structure
my-package/
├── src/
│ ├── PackageServiceProvider.php
│ ├── Actions/
│ ├── DTOs/
│ └── ...
├── tests/
├── composer.json
└── README.md
Use semantic versioning. Test packages independently. Document clearly.
Core Packages (Always)
Spatie Laravel Data
composer require spatie/laravel-data
- DTOs with casting, validation, transformers
- Test factory support
Spatie Model States
composer require spatie/laravel-model-states
- State machine pattern
- State transitions with dedicated classes
Spatie Query Builder
composer require spatie/laravel-query-builder
- Filter, sort, include relations via query strings
- API-friendly querying
Saloon
composer require saloonphp/saloon saloonphp/laravel-plugin
- Elegant API client builder
- Testable external service integrations
Pest
composer require pestphp/pest pestphp/pest-plugin-laravel --dev
- Expressive testing framework
- Architecture tests
Optional Packages
Laravel Sanctum
composer require laravel/sanctum
When: API authentication needed
Stancl Tenancy
composer require stancl/tenancy
When: Multi-tenant application
Spatie Settings
composer require spatie/laravel-settings
When: Application-level settings needed
Installation Commands
Full Install
composer require \
spatie/laravel-data \
spatie/laravel-model-states \
spatie/laravel-query-builder \
saloonphp/saloon \
saloonphp/laravel-plugin
composer require \
pestphp/pest \
pestphp/pest-plugin-laravel \
--dev
./vendor/bin/pest --init
Minimal Install
composer require spatie/laravel-data
composer require pestphp/pest pestphp/pest-plugin-laravel --dev
./vendor/bin/pest --init