Lesson 21 / 25
Best Practices & Anti-patterns
Learn what to do and what not to do with ESLint and Prettier.
Key principles
DO: Use extends, prefer warn over error initially, commit configs to git. DON'T: Disable all rules, ignore formatter conflicts, skip CI checks.
Good vs bad patterns
Compare good and bad ESLint configuration patterns.
// GOOD: Use extends and overrides
{ "extends": ["eslint:recommended", "prettier"],
"overrides": [{ "files": "*.test.js", "rules": { "no-console": "off" } }]
}
// BAD: Disable everything, no extends
{ "rules": { "no-unused-vars": "off", "no-undef": "off" } }
// GOOD: Gradual enforcement
{ "rules": { "no-console": "warn" } }
// BAD: Immediate strict errors on adoption
{ "rules": { "no-console": "error" } }
Output:
Good patterns use extends, overrides, and warn initially
Evolution over time
Start loose (warn, few rules) and tighten over time (error, more rules) as the team adapts. This reduces friction and improves adoption.
Quick check
Quick check: What's a best practice for team adoption?
- Start with warn, gradually move to error as team adapts.
- Enforce all rules as errors immediately.
- Disable most rules.
Answer
Start with warn, gradually move to error as team adapts. — Gradual enforcement reduces resistance and allows the team to adjust their workflow progressively.