🛠 Contribution Guide
The project uses a branching strategy based on Semantic Versioning.
- The main branch for developing the next version.
- All commits* and Pull Requests must target it.
- *All commits must pass the Pull Request.
- Contains a pre-release version of the corresponding release.
- Before a new release is published, a
release/vX.X.Xbranch is created from it. - Accepts changes only from the
mainbranch via Pull Requests.
- Represents a finalized release version.
- Does not accept new commits or Pull Requests.
- A branch for maintaining one of the released LTS versions.
- Only changes related to the corresponding LTS release should be merged.
- All changes must go through Pull Requests — direct commits are prohibited.
-
Fork the repository: Create a copy of the project under your GitHub account.
-
Create a new branch: Start from the
mainbranch with a descriptive name, e.g.,feature-new-featureorbugfix-fix-issue. -
Make changes: Modify the code or documentation as needed.
-
Write a commit: Follow the Conventional Commits format:
<type>[optional scope]: <short description> [optional body] [optional footer]Examples:
feat(parser): add array supportfix(auth): fix token validation bugdocs(readme): update installation guide
Common commit types:
feat: new featurefix: bug fixdocs: documentation onlystyle: code style (formatting, spacing, etc.)refactor: code change that neither fixes a bug nor adds a featureperf: performance improvementtest: adding or updating testsbuild: changes that affect the build system or dependenciesci: CI/CD configurationchore: other changes that don't affect source or testsrevert: revert a previous commit
Breaking change example:
feat!: drop support for deprecated API BREAKING CHANGE: method `getData()` is no longer supported; use `fetchData()` instead. -
Push the branch: Upload your branch to your fork on GitHub.
-
Open a Pull Request: Create a PR from your branch into the
mainbranch of the original repository.
- Code Style: Follow the project's code style conventions.
- Discussion: If unsure, open an issue for discussion before starting.
By submitting changes, you agree that your contribution will be licensed under the project's license.
If you have questions or need help, don’t hesitate to open an Issue or Pull Request.
🛠 Руководство по участию в проекте
Проект использует стратегию ветвления, основанную на семантическом версионировании.
- Основная ветка для разработки новой версии.
- Все коммиты* и Pull Request должны направляться в неё.
- *Все коммиты должны проходить Pull Request.
- Содержит предварительную версию соответствующего релиза.
- Перед выпуском новой версии от неё создаётся ветка
release/vX.X.X. - Принимает изменения только из ветки
mainпосредством Pull Request.
- Представляет зафиксированную версию релиза.
- Не принимает новых коммитов или Pull Request.
- Ветка для поддержки одной из выпущенных LTS-версий.
- В неё должны попадать только изменения, относящиеся к соответствующему LTS-выпуску.
- Все изменения должны вноситься исключительно через Pull Request — прямые коммиты запрещены.
-
Форкните репозиторий: Создайте копию проекта в своём аккаунте GitHub.
-
Создайте новую ветку: От ветки
mainсоздайте ветку с описательным названием, например,feature-новая-функцияилиbugfix-исправление-ошибки. -
Внесите изменения: Выполните необходимые изменения в коде или документации.
-
Оформите коммит: Соблюдайте формат сообщений коммитов согласно спецификации Conventional Commits:
<тип>[опциональная область]: <краткое описание> [опциональное тело] [опциональный подвал]Примеры:
feat(parser): добавлена поддержка массивовfix(auth): исправлена ошибка валидации токенаdocs(readme): обновлены инструкции по установке
Основные типы коммитов:
feat: добавление новой функциональностиfix: исправление ошибокdocs: изменения в документацииstyle: изменения, не влияющие на смысл кодаrefactor: рефакторинг без добавления функциональностиperf: улучшение производительностиtest: добавление или изменение тестовbuild: изменения, влияющие на систему сборки или зависимостиci: изменения в настройке CI/CDchore: прочие измененияrevert: откат предыдущих изменений
Пример коммита с нарушением обратной совместимости:
feat!: удалена поддержка устаревшего API BREAKING CHANGE: метод `getData()` больше не поддерживается; используйте `fetchData()` вместо него. -
Запушьте ветку: Отправьте вашу ветку в форк.
-
Создайте Pull Request: Откройте Pull Request в ветку
mainоригинального репозитория.
- Кодстайл: Соблюдайте стандарты кодирования проекта.
- Обсуждение: При сомнениях начните обсуждение в Issues перед работой.
- Семантическое версионирование (SemVer) 2.0.0
- Соглашение о коммитах (Conventional Commits) 1.0.0
- Руководство по стилю кода
Отправляя изменения, вы соглашаетесь с тем, что ваш вклад будет распространяться под лицензией проекта.
Если у вас возникнут вопросы или потребуется помощь, не стесняйтесь обращаться через Issues или Pull Requests.