add component.json support