Thank you for your interest in contributing to markmv! This document provides guidelines for contributing to the project.
This project uses Conventional Commits for all commit messages. This enables automatic semantic versioning and changelog generation.
Each commit message should have the following format:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
- feat: A new feature
- fix: A bug fix
- docs: Documentation only changes
- style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
- refactor: A code change that neither fixes a bug nor adds a feature
- perf: A code change that improves performance
- test: Adding missing tests or correcting existing tests
- build: Changes that affect the build system or external dependencies
- ci: Changes to CI configuration files and scripts
- chore: Other changes that don't modify src or test files
- revert: Reverts a previous commit
Common scopes for this project include:
- cli: Command-line interface changes
- core: Core functionality changes
- utils: Utility function changes
- types: Type definition changes
- tests: Test-related changes
- deps: Dependency updates
feat(cli): add support for batch file operations
fix(core): resolve issue with link resolution in nested directories
docs(readme): update installation instructions
test(utils): add comprehensive tests for path utilities
chore(deps): update typescript to latest versionFor breaking changes, add BREAKING CHANGE: in the footer or add ! after the type/scope:
feat(api)!: change default output format to JSONor
feat(api): change default output format to JSON
BREAKING CHANGE: The default output format has changed from plain text to JSON.To make writing conventional commits easier, you can use commitizen:
npm run commitThis will prompt you through creating a proper conventional commit message.
- Fork the repository
- Create a feature branch from
main - Make your changes
- Write tests for your changes
- Ensure all tests pass:
npm test - Ensure linting passes:
npm run lint - Ensure type checking passes:
npm run typecheck - Commit your changes using conventional commits
- Push to your fork and submit a pull request
- Run tests:
npm test - Run tests with coverage:
npm run test:coverage - Run tests in watch mode:
npm run test:watch
This project uses Biome for linting and formatting:
- Check code style:
npm run check - Format code:
npm run format - Lint code:
npm run lint
Releases are automated using semantic-release based on conventional commits:
- feat: triggers a minor version bump
- fix: triggers a patch version bump
- BREAKING CHANGE: triggers a major version bump
The release process runs automatically on the main branch and:
- Analyzes commit messages since the last release
- Determines the next version number
- Generates a changelog
- Creates a GitHub release
- Publishes to npm (if configured)
If you have questions about contributing, please open an issue for discussion.