Welcome, and thank you for your interest in contributing to Oblique.
This project and everyone participating in it is governed by the Oblique code of conduct. By participating, you are expected to uphold this code.
Your comments, feedbacks and questions are welcome. The development team is available by email.
- GIT
- nodejs & npm
- AngularCli installed globally:
npm i -g @angular/cli
- Clone the repo:
git clone https://github.com/oblique-bit/oblique.git
. - Install project dependencies:
npm ci
- start the showcase:
npm start
- start the tests:
npm test
We have very precise rules over how our git commit messages can be formatted. This leads to more readable messages that are easy to follow when looking through the project history. The git commit messages will also be used to generate Oblique's change log.
For better readability, please follow the following rules:
- 1 commit per change, fixes have to be squashed together.
- A change includes its tests, mocks, documentation and schematics.
- 1 commit concerns 1 scope (see below), if a commit spans multiple scopes, split it into several commits. Exception: changes that spans most of the library can be grouped together. In that case, there is no scope
- no line of the commit message can be longer than 100 characters.
- changes to the showcase should NEVER come with another type (see below) as showcase. All showcase changes of an issue should be squashed together
Each commit message consists of a header, a body and a footer. The header has a special format that includes a type, a scope and a subject:
<type>(<scope>): <subject>
<body>
<footer>
The header is mandatory and lowercase only. The scope of the header is optional. There no space between type and scope.
The type is mandatory and must be one of the following:
- feat: Changes that creates, improves or removes a feature
- fix: Changes that fixes a bug
- refactor: Changes to a feature that neither adds, removes nor fixes a behavior
- test: Changes that affect tests and their configuration only
- docs: Changes that affect the documentation only
- showcase: Changes that affect the showcase only
- format: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- chore: Anything that do not fit in any previous types (e.g. release, dependencies update, ...)
The scope is optional and should be the name of the Oblique feature affected:
- alert
- authentication
- autocomplete
- button
- breadcrumb
- collapse
- column-layout
- document-meta
- error-messages
- external-link
- file-upload
- global-events
- http-interceptor
- input-clear
- icon
- language
- master-layout
- multi-translate-loader
- nav-tree
- nested-form
- notification
- number-format
- off-canvas
- paginator
- popover
- pop-up
- schema-validation
- scrolling
- search-box
- selectable
- service-navigation
- spinner
- sticky
- translate-params
- unknown-route
- unsaved-changes
- material (for material design components or styles)
- schematics (for the schematics not directly linked to a feature)
- styles (for the global CSS)
- toolchain (for the configuration, build, releases...)
- translation (for the translations not directly linked to a feature)
- utilities (for utilities.ts)
The subject is mandatory and contains a succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize the first letter
- no dot (.) at the end
The body is optional. Just as in the subject, use the imperative, present tense: "change" not "changed" nor "changes". The body should include the motivation for the change and contrast this with previous behavior.
The footer is optional and should contain a reference to an issue if any, e.g.: OUI-715
.
If you want reference multiple issue numbers (like sub-tasks), you can do it with the following pattern: <parent-task number> / <sub-task number>
, e.g.: OUI-42 / OUI-21
.
It should also contain any information about Breaking Changes.
Breaking Changes have to start with the words BREAKING CHANGE:
followed by a newline. The rest of the commit message is then used for this. Multiple breaking changes can be displayed with bullet points
OUI-715
BREAKING CHANGE:
* function `funcA` has been removed in favor of `funcB`
* property `prop` has been removed with no replacement
* file `fileName` has been renamed into `myFile`