Shareable Configurations
Shareable configs allow you to package and distribute ESLint configurations across multiple projects. They’re perfect for enforcing team standards, company-wide rules, or community best practices.What is a Shareable Config?
A shareable config is an npm package that exports an ESLint configuration object or array. It enables:- Consistent linting across projects
- Team coding standards
- Framework-specific configurations
- Company-wide rule enforcement
- Easy configuration updates
Popular Shareable Configs:
@eslint/js- ESLint’s official JavaScript configseslint-config-airbnb- Airbnb’s JavaScript style guideeslint-config-standard- JavaScript Standard Styleeslint-config-prettier- Disable conflicting Prettier rules
Creating a Shareable Config
1
Create npm Package
Initialize a new package:
2
Create Configuration File
Create
index.js as the entry point:index.js
3
Configure package.json
package.json
4
Publish
Config Naming Conventions
Basic Config Structure
Export an array of configuration objects:index.js
Single Config Object
You can also export a single configuration:index.js
Using a Shareable Config
Install and use the config:Extending Configurations
Build on top of other configs:index.js
Overriding Settings
Users can override your config:eslint.config.js
Multiple Configurations
Export multiple configs from one package:eslint.config.js
Dynamic Configurations
Generate configs programmatically:index.js
eslint.config.js
Including Plugins
Bundle plugins with your config:index.js
Including Parsers
Bundle custom parsers:index.js
Real-World Example
Comprehensive config for React projects:index.js
File-Specific Configs
Provide different configs for different file types:index.js
Environment-Specific Configs
Create configs for different environments:Testing Configs
Test your shareable config:test/config.test.js
Documentation Template
Provide clear documentation:README.md
Publishing Checklist
1
Package Configuration
- Correct
mainentry point - Appropriate keywords in
package.json -
peerDependenciesfor ESLint -
dependenciesfor included plugins
2
Documentation
- Comprehensive README
- Installation instructions
- Usage examples
- Rule documentation
- Migration guide (if updating)
3
Testing
- Test config with ESLint
- Verify all plugins work
- Test overrides
- Check edge cases
4
Versioning
- Follow semantic versioning
- Maintain changelog
- Document breaking changes
Maintenance
Version Updates
Update peer dependencies:package.json
Deprecation
When deprecating rules:Best Practices
Config Organization
Legacy Config Support
Support both flat and legacy formats:index.js
Real-World Examples
@eslint/js
Official ESLint JavaScript configs
eslint-config-airbnb
Airbnb’s style guide
eslint-config-standard
JavaScript Standard Style
eslint-config-prettier
Disable Prettier conflicts
Next Steps
Create a Plugin
Package rules with your config
Custom Rules
Add custom rules to your config