I face the same issue. Though I have not found a solution yet, I describe here my unsuccessful attempt, maybe it will help someone:
I noticed that in mapbox-gl-test-suite they run tests by rendering tile png images based on provided json styles (I guess it is Mapbox GL Style json) and compare the rendered and expected png files (on pixel level).
My idea was to take the piece of code which renders the png tile image but apply my own Mapbox GL Style json obtained via
Mapbox Studio > Download as suggested by Steve.
I managed to launch the whole test suite and changed style.json with my own json file, but then I run into following error:
ERROR (Style): Failed to load sprite: Error: Invalid protocol: mapbox:
The issue is that in original style.json they use following URIs to gather tiles:
However my json style obtained from web-based Mapbox Studio has following remote-style URIs (i.e. all content is served from mapbox servers):
Maybe I miss some require in js to add support for such remote URIs, or maybe I am completely wrong and this is not right approach to gather tiles from web-based Mapbox Studio for offline use.