The primary reason ESLint was created was to allow developers to create their own linting rules. ESLint is designed to have all rules completely pluggable. The default rules are written just like any plugin rules would be. They can all follow the same pattern, both for the rules themselves as well as tests. While ESLint will ship with some built-in rules to make it useful from the start, you'll be able to dynamically load rules at any point in time.
ESLint is written using Node.js to provide a fast runtime environment and easy installation via npm.
Everything is pluggable:
- Rule API is used both by bundled and custom rules
- Formatter API is used both by bundled and custom formatters
- Additional rules and formatters can be specified at runtime
- Rules and formatters don't have to be bundled to be used
- Is standalone
- Can be turned off or on (nothing can be deemed "too important to turn off")
- Can be set to a warning or error individually
- Rules are "agenda free" - ESLint does not promote any particular coding style
- Any bundled rules are generalizable
- Values documentation and clear communication
- Is as transparent as possible
- Believes in the importance of testing