Brewfile: a Gemfile, but for Homebrew

Gabe Berke-Williams

Bundler users define dependencies for Ruby applications in a Gemfile and install those dependencies by running bundle install.

Homebrew users on macOS can define system dependencies for their projects with a Brewfile:

# Brewfile
brew "openssl"
# a comment
tap "homebrew/dupes"

The brew bundle command is automatically installed the first time it is used. Simply create a Brewfile at the root of your project’s directory tree, and run brew bundle while in that directory.

Note that Homebrew will treat lines that start with # as comments. To install a package, use brew, and to tap a repository, use tap. So this:

brew "openssl"
# a comment
tap "homebrew/dupes"

is equivalent as these commands:

brew install openssl
brew tap homebrew/dupes

Usage

I can think of a few places where a Brewfile would be welcome:

  • In dotfiles, either yours or your company’s.
  • A setup script for your app (bundle install && brew bundle)
  • A setup script for a new machine. I often forget to install one of them (like rbenv-gem-rehash).

It’s a neat encapsulation for non-programming-language dependencies like phantomjs.

What’s next

If you found this useful, I recommend checking out the source of the brew bundle command. For more Homebrew tricks, read through our macOS-related posts.

About thoughtbot

We've been helping engineering teams deliver exceptional products for over 20 years. Our designers, developers, and product managers work closely with teams to solve your toughest software challenges through collaborative design and development. Learn more about us.