laravel/installer
Laravel Installer is the official CLI tool to quickly create new Laravel applications. Install via Composer, then run a single command to scaffold a fresh project with the latest framework version and recommended defaults.
Installation:
composer global require laravel/installer
Ensure ~/.composer/vendor/bin is in your PATH (or use ./vendor/bin/laravel if installed locally).
First Use Case: Create a new Laravel project with a single command:
laravel new project-name
This scaffolds a fresh Laravel app with all dependencies, .env, and default config.
Where to Look First:
InstallerCommand.php for CLI logic and Installer.php for core installation workflows.Project Creation:
laravel new project-name (creates in current directory).laravel new /custom/path/project-name.--preset=api, --preset=jetstream, or --preset=fortify to scaffold with preconfigured stacks (e.g., API-only, Jetstream auth).
laravel new project-name --preset=jetstream
Dependency Management:
composer install under the hood. Override dependencies by editing composer.json post-install or use --dev/--no-dev flags to control environment-specific packages.Environment Setup:
.env with default values. Customize via:
--env=production (sets APP_ENV=production)..env after installation.Integration with CI/CD:
# Example in a Dockerfile
RUN laravel new /var/www/project --preset=api --env=production
Local Development Workflow:
valet/laragon for local servers:
laravel new ~/Sites/project-name && cd project-name && valet link
Team Onboarding:
README snippet:
# Install project
git clone repo-url
cd project
laravel new . --preset=jetstream # Reinstall with preset
npm install && npm run dev
Template Projects:
git clone --bare base-project.git new-project && cd new-project
git push -u origin master
laravel new . --preset=api # Overwrite with new preset
Custom Presets:
Global Install Path:
laravel command isn’t found, ensure ~/.composer/vendor/bin is in PATH or use the full path:
~/.composer/vendor/bin/laravel new project-name
Permission Issues:
root. Use sudo only if necessary (e.g., for system-wide Composer installs):
sudo chown -R $USER ~/.composer
Preset Conflicts:
--preset=api --preset=jetstream) may cause config clashes. Stick to one preset per install.Composer Cache:
composer clear-cache
Network Restrictions:
composer config -g http-proxy http://proxy.example.com:8080
Verbose Output:
laravel new project-name --verbose
Dry Runs:
laravel new project-name --dry-run
Manual Fallback:
composer create-project laravel/laravel project-name
.env Overrides:
.env but doesn’t validate values. Always check critical settings (e.g., APP_KEY, DB_*).Custom Composer Auth:
auth.json is configured:
composer config -g http-basic.example.com username password
PHP Version Mismatches:
# Using PHP 8.1 (via PHP-Brew or similar)
PHP_BIN_PATH=/usr/local/php-8.1/bin/php laravel new project-name
Custom Presets:
/path/to/preset/
├── composer.json # Define preset as a Composer package
├── src/Preset.php # Extend \Laravel\Installer\Preset
└── README.md # Documentation
composer.json:
{
"extra": {
"laravel": {
"presets": {
"custom-preset": "vendor/path/to/preset"
}
}
}
}
laravel new project-name --preset=custom-preset
Post-Install Hooks:
composer create-project laravel/installer && cd installer
php artisan vendor:publish --tag=installer-templates
resources/views/installer/ to customize scaffolding.Integration with Laravel Sail:
laravel new project-name --preset=sail
How can I help you explore Laravel packages today?