There are two popular ways to set up Laravel/php development environment on macOS: Valet and Homestead. Both are good for development, but their approach is different. Valet is a minimalistic, fast development environment, but Homestead offers a full vagrant virtual machine – with all it’s advantages and disadvantages. Let’s dive into the strengths and weaknesses of both.
- Easy to set up
- Fast – it is basically just nginx with dnsmasq
- No configuration is necessary when you add a new project, just create a folder in your the web root and you are ready to go
- It starts automatically with the operating system
- No need for provisioning/start up/ssh
- You have to install all the other necessary services like php, mysql, mongodb etc manually, but it is easy to do on mac with Homebrew
- If you have projects which requires different versions of php, switching between the php versions could be tricky. Update: since Laravel 5.7 it is easy to switch between php versions using the valet use php@version command.
- It provides a full Ubuntu virtual machine
- All necessary services are preinstalled
- Easy to install other Linux services and binaries if necessary
- Work on both macOS, Windows, and Linux, and the same development environment can be set up for every team member regardless of os.
- It is slow. And sometimes even slower.
- Every new project requires new entry in Homestead.yaml and /etc/hosts
- Npm run dev runs extremely slow in vagrant, so it is better to run it outside, directly on mac, but all php commands (e.g. artisan) and composer should run in Homestead, which can be confusing sometimes
- Setting up debugger requires some more effort compared to Valet (especially for php cli)
Both of these systems work well for php development, and as the documentation states these are intended for different audiences. It depends or your taste and your team’s needs which one suits you better. My choice is Valet.