So this was a bit of a red herring.
coffeelint
was enabled and giving me warnings when running brunch, but since I'm beginning, I wasn't worried about it. Nonetheless, there were enough warnings that it scrolled off the screen.
I noticed that I had configured:
'js/vendor.js': /^(bower_components|vendor)/
'js/app.js': /^app/
yet no vendor.js appeared. Scrolling up, I found this error:
error: [Error: Component JSON file ".../bower_components/jquery-simulate/.bower.json"
must have `main` property. See https://github.com/paulmillr/read-components#README]
Quite simply, I needed to provide an overrides
section because jquery-simulate
doesn't provide a .bower.json file (I'm accessing it directly from git).
In the end, fixing this meant vendor.js was generated and $ was available.