{"id":17835075,"url":"https://github.com/namesmt/ilearn-conventional-commits","last_synced_at":"2025-08-05T23:16:19.793Z","repository":{"id":203796175,"uuid":"710455021","full_name":"NamesMT/ilearn-conventional-commits","owner":"NamesMT","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-03T14:30:27.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T03:47:20.885Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NamesMT.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-26T18:16:48.000Z","updated_at":"2023-10-26T18:17:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"2dc27c29-5532-404c-9a97-6cabba56f7e2","html_url":"https://github.com/NamesMT/ilearn-conventional-commits","commit_stats":null,"previous_names":["namesmt/ilearn-conventional-commits"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NamesMT%2Filearn-conventional-commits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NamesMT%2Filearn-conventional-commits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NamesMT%2Filearn-conventional-commits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NamesMT%2Filearn-conventional-commits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NamesMT","download_url":"https://codeload.github.com/NamesMT/ilearn-conventional-commits/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246819750,"owners_count":20839094,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-27T20:16:45.614Z","updated_at":"2025-04-02T12:44:26.254Z","avatar_url":"https://github.com/NamesMT.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Conventional Commits\nhttps://www.conventionalcommits.org/en/v1.0.0/\n\n### What is it?\n- Conventional Commits is a specification that defines a set of rules for creating commit messages.\n- Basically, it defines a mandatory format you must follow when commiting:\n  - The first line contains: a mandatory **type**, an *optional* **scope**, and a mandatory **subject/description**.\n    - `type: subject`\n    - `type(scope): subject`\n  - Theres also optional **body** and **footer**s to add more details to the commit message.\n    - The body is a more detailed description of the change,\n    - The footer is for side and extra informations. [SEE EXAMPLE](https://www.conventionalcommits.org/en/v1.0.0/#commit-message-with-multi-paragraph-body-and-multiple-footers)\n    - ```\n      type(scope): subject\n      \n      \u003cBODY\u003eA # Use one linebreak for more paragraphs of BODY\n      B\n      C\n\n      \u003cFOOTER\u003eX\n      \n      \u003cFOOTER\u003efix: #1, #2, #3\n\n      BREAKING CHANGE: # Special footer informs about a breaking change\n      ```\n- The **type** describes the kind of change that was made\n- The *optional* **scope** describes which parts of the codebase was affected\n- Lastly, the **subject** is a brief description of the change.\n- Examples: \n  - `type(scope): subject`\n    - fix(api): authentication endpoint bug\n    - feat(login): add forgot password function\n    - docs(readme): update installation instructions\n    - style(css): update modal button styles\n    - chore!: drop support for Node 14\n      - Here we could also use the exclamation: '!' before the colon to indicates a BREAKING CHANGE because the subject is self-explained\n- Type meanings:\n  - feat: feature / enhancement\n  - fix: bug fix\n  - docs: Documentation-only changes\n  - style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)\n  - refactor: Changes that neither fixes a bug nor adds a feature\n  - perf: Could be considered subtype of `refactor`, performance improvements\n  - test: Adding or correcting tests\n  - build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)\n  - ci: Changes to CI configuration files and scripts (example scopes: Gitlab CI, CircleCI, Travis CI)\n  - chore: Other changes (most likely not inside of src or test)\n  - revert: Reverts previous commit(s)\n\n### Why?\nUsing Conventional Commits has several benefits:\n- Consistency: Conventional Commits is growing in popularity and is used in most starred projects like `vue`, `svelte`, `angular`, even older popular projects like `express`, `axios` has switched commit type to Conventional, which standardized commit message format for consistent history.\n- Communication: Make understanding the changes made to the codebase easier for teammates, the public, and other stakeholders.\n- Semantic Versioning: Compliant with Semantic Versioning specification.\n- Automation: Automated toolings like:\n  - semver version auto-bumping\n  - generating changelogs and release notes.\n- Collaboration: Facilitates collaboration and tracking of changes.\n- https://www.conventionalcommits.org/en/v1.0.0/#why-use-conventional-commits\n\n### Recommended Toolings:\n- [commitzen (cz)](https://github.com/commitizen/cz-cli)\n  - For beginner, it helps making a commit in the Conventional format\n  - Optionally, could be used as a git hook to enforce commit message format\n- [changelogen](https://github.com/unjs/changelogen)\n  - Generate changelog from conventional commit messages\n  - Can also be used to automatically bumps version and git tag, push, release (with auto-generated release note)\n\n### Tips\n- Write neutral mood, concise subject, ie: \"add yaml auto-format on save\" instead of \"added auto-formatting for yaml files on file save\"\n- Split your commits, don't commit too many changes in one commit and waste time thinkink of a complex way to describe your changes\n\n\n### **DEMO TIME!!!!!!!!!!**\n**Enough words, lets get to action!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamesmt%2Filearn-conventional-commits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnamesmt%2Filearn-conventional-commits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamesmt%2Filearn-conventional-commits/lists"}