Overview
GitHub Desktop uses automated linting tools to maintain code quality and consistency:- ESLint - JavaScript/TypeScript linter with custom rules
- Prettier - Opinionated code formatter
- markdownlint - Markdown file linter
Running Linting Checks
Check All Files
Run all linting checks:- Prettier formatting checks
- ESLint source code checks
- TypeScript compilation checks
Auto-Fix Issues
Automatically fix linting issues where possible:Some issues cannot be automatically fixed and will require manual correction.
Specific Linting Commands
Prettier
Check formatting:- TypeScript/JavaScript:
.ts,.tsx,.js,.jsx - Styles:
.scss - Config:
.json,.yaml,.yml - Markup:
.html
ESLint
Check source code:app/src/- Application source codeapp/test/- Test filesscript/- Build scriptseslint-rules/- Custom ESLint ruleschangelog.json- Changelog entries
Markdown Linting
Check Markdown files:ESLint Configuration
ESLint is configured in.eslintrc.yml with:
Parser and Plugins
- Parser:
@typescript-eslint/parserfor TypeScript support - Plugins:
@typescript-eslint- TypeScript-specific rulesreact- React best practicesjson- JSON file lintingjsdoc- JSDoc comment validationgithub- GitHub-specific conventions
Key Rules
Naming Conventions
Import Restrictions
No Default Exports
Custom ESLint Rules
GitHub Desktop includes custom ESLint rules ineslint-rules/:
insecure-random- Prevents use ofMath.random()for security-sensitive codereact-no-unbound-dispatcher-props- Ensures proper dispatcher prop bindingreact-readonly-props-and-state- Enforces readonly props and statereact-proper-lifecycle-methods- Validates React lifecycle methodsno-loosely-typed-webcontents-ipc- Enforces typed IPC communication
Editor Integration
Most editors support real-time linting. Install these extensions:Visual Studio Code
Other Editors
See Tooling for configuration instructions.Pre-Commit Checks
Linting checks run automatically in CI on every pull request.
Continuous Integration
All pull requests must pass linting checks before merging. CI runs:- Prettier - Formatting validation
- ESLint - Code quality checks
- TypeScript - Type checking
- Custom rules - Project-specific validations
Common Issues
Prettier Conflicts
If Prettier and ESLint conflict:eslint-config-prettier plugin disables conflicting ESLint rules.
Cache Issues
ESLint uses caching for performance. Clear the cache if you encounter stale errors:TypeScript Errors
ESLint requires TypeScript to compile. If you see parsing errors:Configuration Files
.eslintrc.yml- ESLint configuration.prettierrc- Prettier configuration (if present).markdownlint.js- Markdown linting ruleseslint-rules/- Custom ESLint rule implementations
Next Steps
- Configure your Development Tools
- Learn about Testing
- Review Building the application