I was about to make a joke on Twitter the other day, saying how I move to a new Mac is basically about this command:
brew install yarn nvm cowsay fortune tree direnv gh git-lfs imagemagick jq qpdf webp
Because most of the tools I often use (besides VS Code) are living in the terminal installed by brew
That's when I was discovering that brew actually has a subcommand called bundle. π€―π€―π€―
Basically, it generates a "Brewfile" for you (like your beloved package.json files in node projects), writing out a list of packages (called formulaes here) that you have installed.
All in all, it's a brilliant way to move all your devtools quickly from one Mac to another.
Give it a try!
1οΈβ£ Generate a Brewfile (acting as your lockfile) with
brew bundle dump
This file is totally human-readable, so when you cat
it, you should see something like:
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-fonts"
tap "homebrew/core"
brew "cowsay"
brew "direnv"
brew "fortune"
brew "imagemagick"
brew "jq"
brew "neovim"
brew "nvm"
brew "qpdf"
brew "ripgrep"
brew "tree"
brew "yarn"
cask "firefox"
cask "font-hack-nerd-font"
cask "iterm2"
cask "signal"
2οΈβ£ Carry this Brewfile to your other machine, and just type
brew bundle install
It will install all the dependencies listed in your Brewfile.
That's it! πͺ
Top comments (4)
You can add:
brew bundle dump --describe
To add a description regarding the packages that are being installed in the brew file
For example: github.com/Mvzundert/dotfiles/blob...
Wow! Great recommendation, thanks. awesomeπ
Nice post - thank you Jozsef :)
You can also incorporate your Brewfilw into your dotfiles, or put it in a Git repo for easy tracking. I'm new to MacOS, but have just made my Brewfile:
github.com/lissy93/Brewfile
Great one!