/eslint-config-formidable

A set of default eslint configurations from Formidable

Primary LanguageJavaScriptMIT LicenseMIT

eslint-config-formidable

A composable set of ESLint configurations.

Build Status npm

This project is based on eslint-config-walmart and maintained by Formidable. It supports ESLint 2, 3, and 4.

Installation

Install ESLint and this config package:

$ npm install --save-dev eslint eslint-config-formidable

Depending on the configutation you choose, you'll most likely need one or more additional eslint plugins installed:

$ npm install --save-dev eslint-config-<one> eslint-config-<two>

Usage

Full Configurations

This package includes the following complete and ready to use configurations:

  • formidable - ES6 config
  • formidable/configurations/off - Disable all rules (ESLint's default at 1.0.0+)
  • formidable/configurations/es5-browser - ES5 + browser
  • formidable/configurations/es5-node - ES5 + node < 4.x
  • formidable/configurations/es5-test - ES5 + test
  • formidable/configurations/es5 - ES5 config
  • formidable/configurations/es6-browser - ES6 + browser
  • formidable/configurations/es6-node - ES6 + node 4.x
  • formidable/configurations/es6-react-test - ES6 + react + test
  • formidable/configurations/es6-react - ES6 + react
  • formidable/configurations/es6-test - ES6 + test
  • formidable/configurations/es6 - ES6 config
Dependencies

To consume and extend a config in ESLint just add the extends attribute to your .eslintrc. For more details about how shareable configs work, see the ESLint documentation.

---
"extends":
  - "formidable"
---
"extends":
  - "formidable/configurations/es6-browser"

Piecemeal Configurations

ESLint configuration is broken apart in ./rules containing ESLint's rules and rules for specific ESLint plugins. The full set of ESLint rules (./rules/eslint) are broken into categories that mirror ESLint's documentation. Under each rule type there are sets of configuration as well as an off.js file which turns off every rule in the category.

Examples
---
"extends":
  - "formidable/rules/eslint/best-practices/on",
  - "formidable/rules/eslint/es6/off"
  - "formidable/rules/eslint/node/off"

"env":
  "phantom": true

Limitations

Due to an issue with ESLint, config extension cannot be called from a globally installed (npm install -g eslint) eslint. It can however be run properly using eslint installed directly to your package's node_modules. This can be done by either calling it directly (./node_modules/.bin/eslint .) or from within an npm script since they automatically check local node_modules first. This will be tracked in issue #43.

This package tracks config in the following versions:

Contributing

This project defines a huge number of very contentious config variables. In order to prevent issues/PRs from being eternal bikeshedding pits of doom we would like to ask that you simply upvote or downvote a rule. If you need to explain something please use concrete and reproducible evidence or statistics. Please try not to post assertions of preference, authority, aesthetic beauty (it's in the eye of the beholder), minimal key presses, cognitive load or any other subjective measures of code style.

And A Special Thanks To


License

MIT License

Maintenance Status

Archived: This project is no longer maintained by Formidable. We are no longer responding to issues or pull requests unless they relate to security concerns. We encourage interested developers to fork this project and make it their own!