While this looks stellar and having a serializable format is cool too, I am personally not a fan of gigantic configuration files as this.<p>Being declarative is much better than being imperative and configuration files seem like a natural fit for a declarative system, but they lack expressiveness. They are hard to make generic and lend themselves to repetition and fragility (in my experience).<p>I&#x27;d say that composition wins over configuration. If you provide a domain specific language with a set of useful primitives, users can leverage it to describe what they want with more flexibility and freedom.<p>For concrete examples within js-land, look at gulp.js[1], connect[2]-style middleware, and JSX[3]. All of them describe their structure with code, in a composable, pluggable, reusable fashion.<p>That being said, with a robust enough representation like Vega&#x27;s, I bet you could write code that dynamically builds the final JSON structure.<p>[1]: <a href="http:&#x2F;&#x2F;gulpjs.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;gulpjs.com&#x2F;</a><p>[2]: <a href="https:&#x2F;&#x2F;github.com&#x2F;senchalabs&#x2F;connect" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;senchalabs&#x2F;connect</a>.<p>[3]: <a href="https:&#x2F;&#x2F;facebook.github.io&#x2F;jsx&#x2F;" rel="nofollow">https:&#x2F;&#x2F;facebook.github.io&#x2F;jsx&#x2F;</a>