| # Contribution Guide | |
| Thank you for your valuable time. Your contributions will make this project better! Before submitting a contribution, please take some time to read the getting started guide below. | |
| ## Semantic Versioning | |
| This project follows semantic versioning. We release patch versions for important bug fixes, minor versions for new features or non-important changes, and major versions for significant and incompatible changes. | |
| Each major change will be recorded in the `changelog`. | |
| ## Submitting Pull Request | |
| 1. Fork [this repository](https://github.com/Chanzhaoyu/chatgpt-web) and create a branch from `main`. For new feature implementations, submit a pull request to the `feature` branch. For other changes, submit to the `main` branch. | |
| 2. Install the `pnpm` tool using `npm install pnpm -g`. | |
| 3. Install the `Eslint` plugin for `VSCode`, or enable `eslint` functionality for other editors such as `WebStorm`. | |
| 4. Execute `pnpm bootstrap` in the root directory. | |
| 5. Execute `pnpm install` in the `/service/` directory. | |
| 6. Make changes to the codebase. If applicable, ensure that appropriate testing has been done. | |
| 7. Execute `pnpm lint:fix` in the root directory to perform a code formatting check. | |
| 8. Execute `pnpm type-check` in the root directory to perform a type check. | |
| 9. Submit a git commit, following the [Commit Guidelines](#commit-guidelines). | |
| 10. Submit a `pull request`. If there is a corresponding `issue`, please link it using the [linking-a-pull-request-to-an-issue keyword](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword). | |
| ## Commit Guidelines | |
| Commit messages should follow the [conventional-changelog standard](https://www.conventionalcommits.org/en/v1.0.0/): | |
| ```bash | |
| <type>[optional scope]: <description> | |
| [optional body] | |
| [optional footer] | |
| ``` | |
| ### Commit Types | |
| The following is a list of commit types: | |
| - feat: New feature or functionality | |
| - fix: Bug fix | |
| - docs: Documentation update | |
| - style: Code style or component style update | |
| - refactor: Code refactoring, no new features or bug fixes introduced | |
| - perf: Performance optimization | |
| - test: Unit test | |
| - chore: Other commits that do not modify src or test files | |
| ## License | |
| [MIT](./license) |