Add component.json.

Same as #4, but squashed.