The general idea behind Fotihose is to create a network of standalone Angular components that lets you install that one component instead of a whole library. It should not be opinionated when it comes to design, in fact, it shouldn't include design at all if not absolutely necessary.
- Do not encapsulate native HTML elements.
- No design!
- If you have to, then:
- Use sane styling defaults.
- Make them configurable!
- If you have to, then:
- Have as few dependencies as possible.
- No dependencies on external packages.
- If depending on another Fotihose package, expose that API through your API.
- Make it as easy as possible for the developer to include and use the packages.
- Minimum needed config.
- Again, with a mix of sane defaults and configurable styles and functionality.
- Be prefixed with "fih-"
- Use ChangeDetectionStrategy.OnPush.
- Handle OnChanges for all inputs where needed.
- Reside in the @fotihose namespace.
- Follow SemVer:
- Breaking changes is a major version!
- Contain a readme that follows the same form and function as rest of the components.
- Update app.component.html with an example showing your component in use. Follow the existing conventions.
- Start with basic functionality, then expand. It's better to have a functional library that does something basic than to work on something fancy for ages.
- Use leading underscore for private methods and attributes.
- Use trailing $ for observables.
- Define supported Angular versions range in each project.
- Automate tasks:
- Run
npm i
in all project sub folders. - Prep and release project.
- Run
- Write tests for all projects.
- Provide images for all projects, showing how the library works.