Thank you for your interest in contributing to Igniter CLI! This guide provides guidelines and instructions for contributing to the project.
This project adheres to a Code of Conduct that all participants are expected to follow. Please read our Code of Conduct before contributing.
There are several ways you can contribute to Igniter CLI:
If you find a bug, please open a GitHub issue following these steps:
- Check if the bug has already been reported in existing issues
- Use the available bug report template
- Clearly describe the problem, including steps to reproduce
- Include environment information (Node.js version, OS, etc.)
- If possible, add code examples or screenshots
To suggest improvements or new features:
- Check if the suggestion already exists in issues
- Use the available feature request template
- Clearly describe your suggestion and its benefits
- If possible, add examples of how the feature should work
To contribute code:
- Fork the repository
- Clone your fork locally
- Create a branch for your changes:
git checkout -b feature/feature-name - Implement your changes following the code guidelines below
- Run
npm testto ensure nothing breaks - Commit your changes following our commit conventions
- Push to your fork:
git push origin feature/feature-name - Open a Pull Request to the main repository
# Clone the repository
git clone https://github.com/felipebarcelospro/igniter-cli.git
cd igniter-cli
# Install dependencies
npm install
# Run in development mode
npm run devsrc/
├── index.ts # CLI entry point
├── docs/ # CLI documentation
├── templates/ # Handlebars templates for code generation
├── utils/ # Internal CLI utilities
- Use TypeScript for all code
- Maintain consistent formatting using ESLint and Prettier
- Write tests for new features
- Document public APIs and interfaces
- Follow the Feature-First architecture pattern
- Use meaningful variable and function names
- Keep functions small and focused
- Write clear, concise comments
We follow Conventional Commits for commit messages:
<type>(<optional scope>): <description>
[optional body]
[optional footer(s)]
Common types:
feat:A new featurefix:A bug fixdocs:Documentation changesstyle:Changes that don't affect code (formatting, etc)refactor:Code changes that neither fix a bug nor add a featuretest:Adding or correcting testschore:Changes to build process, tools, etc.
Examples:
feat(generator): add support for custom fields
fix(init): resolve directory creation issue
docs: update README with new commands
All Pull Requests are reviewed by project maintainers. During review, we may request changes or clarification about your implementation.
Requirements for approval:
- Code follows style guidelines
- All tests pass
- Feature aligns with project goals
- Documentation is updated as needed
- CI/CD checks pass
We follow Semantic Versioning:
- MAJOR version for incompatible changes
- MINOR version for backwards-compatible features
- PATCH version for backwards-compatible bug fixes
-
Code Quality
- Write clean, readable code
- Use TypeScript features effectively
- Follow SOLID principles
- Keep functions small and focused
-
Testing
- Write unit tests for new features
- Ensure existing tests pass
- Add integration tests for CLI commands
- Test edge cases and error scenarios
-
Documentation
- Document new features and changes
- Keep code comments clear and relevant
- Update README when adding features
- Include examples in documentation
-
Performance
- Optimize code generation
- Minimize dependencies
- Consider CLI startup time
- Handle large projects efficiently
If you have questions about contributing, feel free to:
- Open an issue with the "question" tag
- Contact project maintainers
- Join our community discussions
Your contributions help make Igniter CLI better for everyone. Thank you for your support!