A Review of Laravel Valet

A while back, Chrome 63 forced all .dev domains to be HTTPS. As a result, I found myself unable to view my local development websites on Chrome. Even though I have been happy with Chrome lately (it’s a resource hog) it’s still my go-to web development browser.

My local WordPress development environment was powered by DesktopServer, and changing the top level domain involved changing a core configuration file. It wasn’t very hard, but it did lead me to try out other local development environments, just in case something like this happened again.

My criteria for a local dev environment was this:

  1. Lightweight. I preferred not to use Virtual Box as a dependency, so as not to take up too much disk space. Also, it would be nice if I didn’t have to wait a while for it to start up.
  2. Flexible. I actually did not want to bundle the dev environment with my project. The projects I work on vary in folder structure, so I wanted to make sure they all can fit inside this environment. Also, I wanted the option of changing top level domains.
  3. Relatively low cost. I’m open to paying for an app, but given the number of free alternatives out there, I was mainly looking at open source projects.

After checking out a few different reviews, I decided to try out Laravel Valet since it looked like it fit my criteria. Note: Valet is Mac only, so don’t try this at home with a Windows machine!

Installation

Installation for Valet was fairly straightforward, but not without its snags. I used Homebrew to install Valet and its dependencies including PHP 7.1 and MySQL. After I ran the final valet install command, I found that I was unable to ping foobar.test as described in the docs.

Some searching led me to a thread to try this:

valet uninstall
valet install
valet forget
brew services restart dnsmasq
brew services restart nginx
brew services restart php71

After that, I was able to ping foobar.test. Thankfully, I don’t need to do this every time I start my computer.

Serving Sites

Serving site with Laravel was delightfully easy. There are two commands, valet park and valet link. valet park lets you register a working directory, and any directory created in that folder will be its own domain. For example, if I run valet park in my ~/Sites directory, I can then install WordPress in the ~/Sites/mysite/ directory and view it at http://mysite.test.

valet link allows me to link a specific folder, say ~/Sites/anothersite/web/ as the root directory for a development domain. I can then run valet link testsite to have it run on http://testsite.test.

Customization

Valet was built for the Laravel framework, but out of the box it supports a good number of PHP frameworks and CMSes. It also allows you to serve unsupported frameworks and applications with special considerations by using custom Valet drivers.

By default Valet uses the .test domain. I can easily change that to app by running valet domain app. There is no need to change folder structures or folder names. This ensures that Chrome will never block your local site!

Finally, it was also easy to serve a local site over HTTPS by running valet secure mysite. Both Chrome and Safari seemed satisfied with the generated SSL certificate, but Firefox still flagged it as insecure.

What I Liked

Valet met my criteria for a local development environment: it was flexible, lightweight, and free. I was able to easily configure certain global settings without having to rename folders. The installation was fairly straightforward, and the docs were pretty easy to follow.

What I Didn’t Like

Valet uses the command line, which for some people is a dealbreaker. I didn’t necessarily mind that, but I’ll admit sometimes it was hard to tell if services were up and running. While the use of Homebrew made installation simpler, I didn’t like how I was pretty much on my own if a Homebrew install failed.

There were two minor annoyances that weren’t exactly Valet’s fault. First, I installed MySQL via Homebrew, and I found that sometimes my sites would lose connection to the database. I’m not sure why that is, and it didn’t happen often enough for me to investigate it further. Second, I use BrowserSync with my gulp setup. With Valet, BrowserSync doesn’t work, and I haven’t spent the time to figure out why it wasn’t working.

Verdict

Would I use Valet for local development? Yes, I’m still using it! Although with the release of DesktopServer 3.8.4, browsers forcing SSL on .dev domain is no longer an issue. Since I’ve had less issues with DesktopServer, I think I might use the two in conjunction. I will host the majority of my local sites on DesktopServer. For sites that are too complex for DesktopServer, I can easily switch over to Valet and serve it there instead.

Have you used Valet? How do you like it?

Leave a Comment