Overview
The Chapinismos project uses ESLint for linting and Prettier for code formatting to maintain consistent, high-quality code across the codebase.ESLint Configuration
Installed Packages
The project uses the following ESLint packages:- eslint (v10.0.2) - Core linting engine
- @typescript-eslint/parser (v8.56.1) - TypeScript parsing
- eslint-plugin-astro (v1.6.0) - Astro-specific rules
- eslint-plugin-jsx-a11y (v6.10.2) - Accessibility rules
Configuration File
ESLint is configured using the modern flat config format ineslint.config.js:
Base Rules
Astro Integration
The recommended Astro ESLint configuration is applied:Accessibility Rules
Accessibility linting helps ensure the site is usable by everyone:Ignored Files
The following directories and files are excluded from linting:dist/**- Build output.astro/**- Astro cache.vercel/**- Vercel outputnode_modules/**- Dependencies*.config.jsand*.config.mjs- Config files**/*.min.js- Minified files
Running ESLint
Check for Issues
To lint the entire codebase:eslint . and displays all warnings and errors.
Auto-fix Issues
To automatically fix fixable issues:eslint . --fix and corrects issues like:
- Missing const declarations
- Unused imports (when safe)
- Formatting issues ESLint can fix
Not all ESLint issues can be auto-fixed. Review the output for remaining warnings and errors that require manual fixes.
Prettier Configuration
Installed Packages
The project uses the following Prettier packages:- prettier (v3.8.1) - Code formatter
- prettier-plugin-astro (v0.14.1) - Astro formatting
- prettier-plugin-tailwindcss (v0.7.2) - Tailwind class sorting
Configuration File
Prettier is configured in.prettierrc:
Configuration Details
- Semicolons: Required (
semi: true) - Quotes: Double quotes (
singleQuote: false) - Indentation: 2 spaces (
tabWidth: 2,useTabs: false) - Trailing commas: ES5 compatible (objects, arrays)
- Line width: 100 characters maximum
- Arrow functions: Always use parentheses around parameters
Plugin Features
prettier-plugin-astro:- Formats
.astrofiles correctly - Handles Astro component syntax
- Preserves frontmatter formatting
- Automatically sorts Tailwind CSS classes
- Uses official Tailwind class order
- Works in HTML, JSX, and Astro files
Running Prettier
Format All Files
To format the entire codebase:prettier --write . and formats all supported files.
Check Formatting
To check if files are formatted without making changes:prettier --check . and exits with an error if any files need formatting.
Editor Integration
Visual Studio Code
Recommended extensions:- ESLint (
dbaeumer.vscode-eslint) - Prettier (
esbenp.prettier-vscode) - Astro (
astro-build.astro-vscode)
VS Code Settings
Add to.vscode/settings.json:
- Formats files on save with Prettier
- Auto-fixes ESLint issues on save
- Uses Prettier for Astro files
Other Editors
For other editors, install:- ESLint plugin/extension
- Prettier plugin/extension
- Astro language support
Pre-commit Hooks
While the project doesn’t currently use pre-commit hooks, you can add them to enforce code quality:Using Husky and lint-staged
{
"lint-staged": {
"*.{js,mjs,astro,ts}": [
"eslint --fix",
"prettier --write"
],
"*.{json,md,css}": [
"prettier --write"
]
}
}
CI/CD Integration
GitHub Actions Example
Add a code quality check workflow (.github/workflows/lint.yml):
- Runs on pull requests and pushes to main
- Checks formatting with Prettier
- Lints code with ESLint
- Fails the build if issues are found
Best Practices
Before Committing
- Run linting:
npm run lint:fix - Run formatting:
npm run format - Fix any remaining warnings or errors
- Test your changes:
npm run dev
Code Review Checklist
- No ESLint errors or warnings
- Code is formatted with Prettier
- Accessibility rules are followed
- No console.log statements in production code
- Unused variables and imports removed
Writing Clean Code
- Use
constby default,letonly when reassignment is needed - Avoid
varkeyword (ESLint will error) - Add alt text to all images
- Ensure interactive elements are keyboard accessible
- Keep functions small and focused
- Write descriptive variable and function names
Troubleshooting
ESLint Errors
“Parsing error”:- Ensure file extensions are correct (.astro, .js, .ts)
- Check for syntax errors in the file
- Verify TypeScript parser is installed
Prettier Issues
Files not formatting:- Check file extension is supported
- Verify Prettier plugins are installed
- Look for syntax errors preventing parsing
- This project doesn’t use
eslint-config-prettieras Prettier handles formatting - ESLint focuses on code quality, not formatting
Editor Issues
Format on save not working:- Verify Prettier extension is installed and enabled
- Check workspace settings override user settings
- Restart editor after configuration changes
- Ensure ESLint extension is installed
- Check ESLint output panel for errors
- Verify
eslint.config.jsis valid
Next Steps
- Set up pre-commit hooks for automatic checks
- Configure your editor for format-on-save
- Review Local Setup for development workflow
- Explore Building and Deployment for production checks