alex-kassel / laravel-domains
Laravel helper to create/manage local domain packages under /domains
Requires
- php: >=8.1
- illuminate/support: ^10.0|^11.0|^12.0
README
Ein Laravel-Helfer zur einfachen Erstellung und Verwaltung lokaler Domain-Pakete unter dem /domains
Verzeichnis. Ermöglicht modulare Entwicklung mit automatischer Composer-Integration und Symlink-Erstellung. Perfekt für Entwickler, die ihre Anwendungen in Domains strukturieren und diese bei Bedarf zu echten Laravel-Paketen auf Packagist veröffentlichen möchten.
🚀 Features
- Einfache Domain-Erstellung: Erstellen Sie neue Domain-Pakete mit einem einzigen Befehl
- Automatische Composer-Integration: Repository-Einträge werden automatisch zu Ihrer
composer.json
hinzugefügt - Symlink-Erstellung: Automatische Verknüpfungen für einfache Entwicklung
- Vollständige Paket-Struktur: Vorlagen für Models, Controller, Views, Routes, Tests und mehr
- Git-Integration: Optionale Git-Initialisierung für neue Domains
- Bulk-Installation: Installieren Sie alle Domains auf einmal
- Modulare Struktur: Ersetzen Sie Laravels
/app
Verzeichnis durch strukturierte Domains - Packagist-Ready: Domains können einfach zu echten Laravel-Paketen werden
📋 Voraussetzungen
- PHP >= 8.1
- Laravel ^10.0|^11.0|^12.0
- Composer
🔧 Installation
1. Paket installieren
composer require alex-kassel/laravel-domains
2. Stubs veröffentlichen (optional)
php artisan vendor:publish --provider="AlexKassel\LaravelDomains\LaravelDomainsServiceProvider" --tag=laravel-domains-stubs
Die Stubs werden standardmäßig nach stubs/alex-kassel/laravel-domains/domain
kopiert, wo Sie sie nach Ihren Bedürfnissen anpassen können.
🎯 Verwendung
Neue Domain erstellen
# Basis-Domain erstellen php artisan domains:make vendor/package-name # Mit Git-Initialisierung php artisan domains:make vendor/package-name --git # Mit automatischer Installation php artisan domains:make vendor/package-name --install # Alle Optionen kombinieren php artisan domains:make vendor/package-name --git --install
Domain installieren
# Einzelne Domain installieren php artisan domains:install vendor/package-name # Alle Domains installieren php artisan domains:install --all
📁 Verzeichnisstruktur
Nach der Erstellung einer Domain wird folgende Struktur erstellt:
domains/
└── vendor/
└── package-name/
├── config/
├── database/
│ └── migrations/
├── resources/
│ └── views/
├── routes/
├── src/
│ ├── Models/
│ ├── Controllers/
│ └── Providers/
├── tests/
├── composer.json
├── LICENSE
└── README.md
🔄 Workflow
1. Domain erstellen
php artisan domains:make mycompany/user-management
2. Domain anpassen
Bearbeiten Sie die generierten Dateien nach Ihren Bedürfnissen:
- Models in
src/Models/
- Controller in
src/Controllers/
- Views in
resources/views/
- Routes in
routes/web.php
- Konfiguration in
config/
3. Domain installieren
php artisan domains:install mycompany/user-management
Dieser Befehl:
- Fügt das Repository zu Ihrer
composer.json
hinzu - Installiert das Paket via Composer
- Erstellt Symlinks für einfache Entwicklung
4. In Ihrer Anwendung verwenden
// Routes sind automatisch verfügbar Route::get('/users', [UserController::class, 'index']); // Views mit Namespace return view('user-management::users.index'); // Models use MyCompany\UserManagement\Models\User;
5. Optional: Zu echten Paketen werden
# Domain in separates Repository kopieren cp -r domains/mycompany/user-management /path/to/separate/repo # Composer.json anpassen (Name, Description, etc.) # Auf GitHub/GitLab hochladen # Bei Packagist registrieren
⚙️ Konfiguration
Composer Repository
Das Paket fügt automatisch einen Path-Repository-Eintrag hinzu:
{ "repositories": [ { "type": "path", "url": "domains/vendor/package-name", "options": { "symlink": true } } ] }
Service Provider
Jede Domain bringt einen eigenen Service Provider mit, der automatisch geladen wird.
Verzeichnisstruktur der Anwendung
Mit diesem Paket können Sie Laravels Standard-/app
Verzeichnis durch eine modulare Domain-Struktur ersetzen:
laravel-project/
├── domains/ # Hier entwickeln Sie Ihre Module
│ ├── privat/
│ │ ├── sandbox/ # Persönliche Experimente
│ │ ├── homepage/ # Eigene Homepage
│ │ └── calc/ # Taschenrechner-App
│ ├── mycompany/
│ │ ├── user-management/ # Benutzerverwaltung
│ │ └── ecommerce/ # Online-Shop
│ └── github-vendor/
│ └── package-1/ # Paket-Entwicklung
├── app/ # Kann leer bleiben oder für globale Logik
├── routes/ # Haupt-Routen
└── resources/ # Globale Ressourcen
🧪 Tests
Tests können direkt in der Domain ausgeführt werden:
cd domains/vendor/package-name
./vendor/bin/phpunit
🔧 Anpassung der Stubs
Nach dem Veröffentlichen der Stubs können Sie diese unter stubs/laravel-domains/domain
anpassen:
php artisan vendor:publish --provider="AlexKassel\LaravelDomains\LaravelDomainsServiceProvider" --tag=laravel-domains-stubs
📚 Beispiele
Private Domains für lokale Entwicklung
# Persönliche Projekte php artisan domains:make privat/sandbox php artisan domains:make privat/homepage php artisan domains:make privat/calc # GitHub-basierte Paketentwicklung php artisan domains:make github-vendor/package-1 php artisan domains:make github-vendor/package-2
Geschäftliche Domains
# E-Commerce Domain php artisan domains:make mycompany/ecommerce # Blog Domain php artisan domains:make mycompany/blog --git --install # API Domain php artisan domains:make mycompany/api
🚨 Fehlerbehebung
Domain existiert bereits
Domain package already exists: /path/to/domains/vendor/package
Löschen Sie das bestehende Verzeichnis oder verwenden Sie einen anderen Namen.
Kein /domains Verzeichnis
No /domains directory found.
Das Verzeichnis wird automatisch erstellt, wenn Sie Ihre erste Domain erstellen.
Composer-Fehler
Falls Composer-Update fehlschlägt, führen Sie manuell aus:
composer update
Namespace-Probleme
Falls es zu Namespace-Konflikten kommt, überprüfen Sie:
- PSR-4 Autoloading in der Domain-
composer.json
- Service Provider Namespaces
- Model- und Controller-Namespaces
🤝 Beitragen
Wir freuen uns über Beiträge! Hier ist der Workflow:
- Fork das Repository
- Erstellen Sie einen Feature-Branch (
git checkout -b feature/amazing-feature
) - Committen Sie Ihre Änderungen (
git commit -m 'Add amazing feature'
) - Pushen Sie den Branch (
git push origin feature/amazing-feature
) - Öffnen Sie einen Pull Request
Entwicklungsumgebung einrichten
# Repository klonen git clone https://github.com/your-username/laravel-domains.git cd laravel-domains # Dependencies installieren composer install # Tests ausführen ./vendor/bin/phpunit
Was wir suchen
- 🐛 Bug-Fixes
- ✨ Neue Features
- 📚 Verbesserte Dokumentation
- 🧪 Zusätzliche Tests
- 🔧 Stub-Verbesserungen
📄 Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe LICENSE Datei für Details.
🙏 Danksagungen
- Laravel Team für das großartige Framework
- Alle Mitwirkenden und Benutzer
📞 Support
Bei Fragen oder Problemen:
- GitHub Issues: Erstellen Sie ein Issue für Bugs oder Feature-Requests
- Diskussionen: Nutzen Sie GitHub Discussions für Fragen und Ideen
- Maintainer: Kontaktieren Sie den Maintainer direkt
🌟 Warum Laravel Domains?
Vorteile gegenüber anderen Lösungen
- Einfachheit: Keine komplexe Konfiguration, funktioniert sofort
- Flexibilität: Domains können lokal bleiben oder zu echten Paketen werden
- Laravel-Native: Nutzt Laravels Standard-Mechanismen
- Entwicklung: Perfekt für die Entwicklung in einer einzigen Laravel-Installation
- Deployment: Ein
/laravel12
Ordner auf dem Server, alle Domains inklusive
Anwendungsfälle
- Modulare Anwendungen: Strukturieren Sie große Laravel-Apps in Domains
- Paket-Entwicklung: Entwickeln Sie Laravel-Pakete in einer echten Anwendungsumgebung
- Experimente: Testen Sie neue Features in separaten Domains
- Team-Entwicklung: Jeder Entwickler arbeitet in seiner eigenen Domain
Entwickelt mit ❤️ für die Laravel-Community