Prettier Overrides Configuration Explained
Prettier's overrides configuration allows setting different formatting rules for different files or directories, which is very useful for multi-language projects or files requiring special formatting.
Basic Syntax
json{ "semi": true, "overrides": [ { "files": "*.css", "options": { "singleQuote": false } } ] }
File Matching Patterns
1. Single File Extension
json{ "overrides": [ { "files": "*.json", "options": { "tabWidth": 4 } } ] }
2. Multiple File Extensions
json{ "overrides": [ { "files": ["*.css", "*.scss", "*.less"], "options": { "singleQuote": false } } ] }
3. Directory Matching
json{ "overrides": [ { "files": "src/styles/**/*", "options": { "printWidth": 120 } } ] }
4. Complex Matching Patterns
json{ "overrides": [ { "files": ["**/*.test.js", "**/*.spec.js"], "options": { "printWidth": 100 } } ] }
Common Use Cases
1. Formatting Rules for Different Languages
json{ "semi": true, "singleQuote": true, "overrides": [ { "files": "*.css", "options": { "singleQuote": false } }, { "files": "*.json", "options": { "tabWidth": 4 } }, { "files": "*.md", "options": { "proseWrap": "preserve" } } ] }
2. Directory-Specific Formatting
json{ "overrides": [ { "files": "legacy/**/*", "options": { "tabWidth": 4, "useTabs": true } }, { "files": "src/**/*", "options": { "tabWidth": 2, "useTabs": false } } ] }
3. Special Formatting for Test Files
json{ "overrides": [ { "files": ["**/*.test.js", "**/*.spec.js", "**/__tests__/**/*"], "options": { "printWidth": 100, "trailingComma": "all" } } ] }
4. Special Handling for Configuration Files
json{ "overrides": [ { "files": [".prettierrc", ".eslintrc", "package.json"], "options": { "tabWidth": 2 } } ] }
Advanced Usage
1. Excluding Specific Files
json{ "overrides": [ { "files": ["**/*.js", "!**/*.min.js"], "options": { "printWidth": 80 } } ] }
2. Specifying Parsers
json{ "overrides": [ { "files": "*.vue", "options": { "parser": "vue" } }, { "files": "*.mdx", "options": { "parser": "mdx" } } ] }
Configuration Priority
- File-specific overrides configuration has highest priority
- Global configuration serves as default values
- Later defined overrides override earlier defined same configurations
Proper use of overrides allows Prettier to flexibly adapt to different formatting needs in complex projects.