prettierignore
Generates .prettierignore to exclude build outputs, dependencies, and generated files from Prettier formatting. Prevents formatting of dist/, node_modules/, and coverage/ directories.
When & Why to Use This Skill
This Claude skill automates the generation of a professional-grade `.prettierignore` file by intelligently analyzing your project's specific environment. It detects build outputs, test coverage directories, and package manager configurations to ensure Prettier only formats source code, thereby optimizing performance and preventing the accidental modification of generated or third-party files.
Use Cases
- New Project Setup: Quickly initialize a standard formatting exclusion list for JavaScript or TypeScript projects to ensure immediate compliance with best practices.
- Performance Tuning: Speed up Prettier execution in large-scale repositories by skipping heavy directories like node_modules and complex build artifacts.
- Framework-Specific Configuration: Automatically detect and exclude custom output directories for modern tools like Vite, Vitest, and Jest without manual path entry.
- Toolchain Synchronization: Maintain consistency across the development environment by aligning Prettier ignore patterns with .gitignore and .eslintignore rules.
| name | prettierignore |
|---|---|
| description | Generates .prettierignore to exclude build outputs, dependencies, and generated files from Prettier formatting. Prevents formatting of dist/, node_modules/, and coverage/ directories. |
Prettier Ignore Skill
Purpose
Generate .prettierignore file to exclude build outputs, dependencies, and generated files from Prettier formatting.
🚨 MANDATORY FILE COUNT
Expected Output: 1 file
.prettierignore(standard format)
🔍 BEFORE GENERATING - CRITICAL RESEARCH REQUIRED
Perform these checks in order before generating the file:
Prettier Version: Verify latest stable version and ignore file support
- Run:
npm view prettier version - Check documentation: Confirm
.prettierignoreformat still supported - If deprecated: Use alternative format (e.g., config-based ignore)
- Run:
Build Output Detection: Identify build directories from project config
- Check
vite.config.tsorvite.config.js:- Look for
build.outDirproperty (default:dist) - If custom output dir found → Use that directory name
- Look for
- Check
package.jsonscripts:- Look for build output paths in scripts
- Default: Use
dist/if no custom output detected
- Check
Test Coverage Detection: Check if test framework generates coverage reports
- Check for test framework (from jest-config or vitest-config skills):
- If
jest.config.jsexists → CheckcoverageDirectory(default:coverage/) - If
vitest.config.tsexists → Checktest.coverage.reportsDirectory
- If
- Check
package.jsontest scripts:- Look for
--coverageflag or coverage directory references
- Look for
- Default: Include
coverage/in ignore patterns
- Check for test framework (from jest-config or vitest-config skills):
Package Manager Detection: Identify which package manager is used
- Check for lock files:
package-lock.json→ npmyarn.lock→ yarnpnpm-lock.yaml→ pnpm
- Note: Lock files should NOT be in
.prettierignore(formatting not applicable) - Always exclude:
node_modules/
- Check for lock files:
Minified/Bundled Files: Check for generated JavaScript patterns
- Standard patterns:
*.min.js,*.bundle.js - Check build config: Look for additional minified output patterns
- Always exclude: Prevents formatting of production bundles
- Standard patterns:
Verify Glob Pattern Support: Confirm pattern syntax compatibility
- Reference: https://prettier.io/docs/en/ignore.html
- Test patterns: Ensure glob syntax matches Prettier's expectations
- Common patterns:
*/,**/*.ext, negation with!
Cross-Skill Coordination: Verify consistency with other ignore files
- Check
.gitignore: Ensure.prettierignoredoesn't format git-ignored generated files - Check
.eslintignore: Similar exclusion patterns should align - Principle: Don't format files that are ignored by version control or linting
- Check
Performance Optimization: Validate ignore patterns reduce unnecessary processing
- Large directories:
node_modules/,dist/,build/significantly impact performance - Generated files: Coverage reports, minified bundles don't need formatting
- Benchmark: Prettier should skip excluded files entirely (zero processing time)
- Large directories:
Execution Checklist
Execute in this order:
- 1. Verify
.prettierignoreformat is still supported by latest Prettier - 2. Detect build output directory from vite.config.ts (default:
dist/) - 3. Detect test coverage directory from test config (default:
coverage/) - 4. Identify package manager (npm/yarn/pnpm) for node_modules exclusion
- 5. Verify glob patterns are valid Prettier ignore syntax
- 6. Cross-check with
.gitignorefor consistency - 7. Generate
.prettierignorewith minimal essential exclusions - 8. Run validation script to confirm file exists and patterns are valid
Output
Primary Format: .prettierignore
# Build outputs
dist/
build/
# Dependencies
node_modules/
# Test coverage
coverage/
# Minified/bundled files
*.min.js
*.bundle.js
Template
See: examples.md in this directory for complete template and detailed examples.
🛑 BLOCKING VALIDATION - MUST RUN AFTER FILE GENERATION
Validation Script
Run this script after generating .prettierignore to verify correctness:
#!/bin/bash
# Prettier Ignore Validation Script
echo "🔍 Validating .prettierignore..."
# Check if file exists
if [ ! -f ".prettierignore" ]; then
echo "❌ BLOCKING ERROR: .prettierignore file not found"
exit 1
fi
# Check if file is not empty
if [ ! -s ".prettierignore" ]; then
echo "❌ BLOCKING ERROR: .prettierignore is empty"
exit 1
fi
# Check for required patterns
REQUIRED_PATTERNS=("dist/" "node_modules/" "coverage/")
for pattern in "${REQUIRED_PATTERNS[@]}"; do
if ! grep -q "$pattern" .prettierignore; then
echo "⚠️ WARNING: Missing recommended pattern: $pattern"
fi
done
# Check glob pattern syntax (basic validation)
if grep -qE '^[^#].*\*\*.*\*\*' .prettierignore; then
echo "⚠️ WARNING: Potential invalid glob pattern (multiple **)"
fi
echo "✅ .prettierignore validation passed"
exit 0
Usage: bash validate-prettierignore.sh
Manual Verification
After generation, manually verify:
- File exists:
ls -la .prettierignore - Content check:
cat .prettierignore - Pattern test:
prettier --check "**/*" --ignore-path .prettierignore(should skip excluded paths) - Performance test: Verify Prettier runs faster with ignore file (compare with/without)
Key Features
- Minimal Exclusions: Only essential patterns (build, deps, coverage, minified)
- Performance Optimized: Skips large directories that don't need formatting
- Build-Aware: Automatically detects custom build output directories
- Coverage-Aware: Excludes test coverage reports based on test framework config
- Glob Patterns: Uses standard ignore syntax compatible with Prettier
- Cross-Tool Consistency: Aligns with
.gitignoreand.eslintignore
Pattern Philosophy
- Build outputs: Never format generated production code
- Dependencies: Skip third-party code in node_modules
- Coverage reports: Exclude auto-generated test reports
- Minified files: Don't format compressed/bundled JavaScript
- Performance: Only ignore what's necessary for speed improvement
Configuration Strategy
- Minimal approach: Keep ignore list short and focused
- No source code: Never exclude
src/or application code - No configs: Format all config files (package.json, tsconfig.json, etc.)
- No lock files: These don't apply to Prettier (not formatted)
- Glob efficiency: Use directory patterns (
dir/) over file globs when possible
Integration Considerations
- Git alignment: Ensure git-ignored build outputs are also Prettier-ignored
- CI/CD: Verify ignore patterns work in automated formatting checks
- Pre-commit hooks: Lint-staged should respect
.prettierignorepatterns - Editor plugins: VSCode Prettier extension respects this file
Maintenance Considerations
- Prettier updates: Check release notes for ignore file format changes
- Build config changes: Update ignore patterns if output directory changes
- New generated files: Add patterns for new auto-generated content
- Performance monitoring: Verify ignore patterns still provide speed benefits