I would store components source in GitHub and use NPM for publishing/distributing releases.
Here's my checklist for maintaining components:
- Add Unit tests
- Add Code Coverage
- Use a CI tool (TravisCI/CircleCI) that runs these tests and reports them back to github (pr/branch status, badges)
- Maintain a Changelog (this can be autogenerated via commit message syntax)
- Use Build scripts (ex: transpile via babel, bump npm version, publish to npm)