0.10.0 • Published 6 years ago

eslint-config-digital-scientists-react v0.10.0

Weekly downloads
4
License
MIT
Repository
github
Last release
6 years ago

eslint-config-digital-scientists-react

An ESLint Shareable Config for React.js projects at Digital Scientists.

This config only provides React and JSX rules, not vanilla JS rules, and therefore should be installed with eslint-config-digital-scientists-base, which you can find here.

For convenience, you can get these configs (along with others) packaged together by simpling installing eslint-config-digital-scientists. You can extend all Digital Scientists configs in your .eslintrc like this:

{
  "extends": "digital-scientists",
  "root": true
}

Or you can extend individual packages within it like so:

{
  "extends": ["digital-scientists/base", "digital-scientists/react"],
  "root": true
}

Installation

It's recommended to always install linting/formatting engines and configs locally, since supported rules and config specifics can change over time and may cause inconsistencies across projects if installed globally and updated over time.

npm install --save-dev --save-exact \
  eslint \
  eslint-config-digital-scientists \
  eslint-config-digital-scientists-react

Usage

In your local .eslintrc.{js,json} file:

{
  "extends": ["digital-scientists-base", "digital-scientists-react"],
  "root": true
}

Note:

  • the eslint-config- portion of the module name is assumed by ESLint.
  • the root attribute prevents ESLint from merging local rules with any global configs you may have installed.

Working on React Native?

To add react-native-specific rules, install eslint-config-digital-scientists-react-native and it to your .eslintrc extends property list:

npm install --save-dev --save-exact eslint-config-digital-scientists-react-native
{
  "extends": [
    "digital-scientists-base",
    "digital-scientists-react",
    "digital-scientists-react-react-native"
  ],

  "root": true
}

Integrating ESLint with your editor

For the best developer experience, it's recommended to install and activate an ESLint extension/plugin for your editor to provide immediate visual feedback about linting issues.

Some recommended ESLint plugins are:

Integrating ESLint With Prettier

In order to user prettier with eslint, you will need to do the following:

Install prettier and eslint-config-prettier

npm install --save-dev --save-exact prettier eslint-config-prettier

Modify .eslintrc.{js,json} to extend eslint-config-prettier after eslint-config-digital-scientists-react to overwrite any rules that conflict with prettier

{
  "extends": [
    "eslint-config-digital-scientists-base",
    "digital-scientists-react",
    "prettier",
    "prettier/react"
  ],

  "root": true
}

Add a prettier config (e.g. .prettierrc.js) to the project root directory with these recommended settings:

module.exports = {
  arrowParens: "always",
  bracketSpacing: false,
  jsxBracketSameLine: false,
  printWidth: 80,
  singleQuote: false,
  semi: true,
  tabWidth: 2,
  trailingComma: "es5",
  useTabs: false,
  proseWrap: "always",
};

Install a Prettier formatting plugin for your editor and set to format on save

For Babel-Transpiled Projects

This config's peer dependencies enable linting relatively modern files including JSX components. If you find that the linter fails to understand some early-stage ES features, you can enable parsing using Babel instead of ESLint's default parser. Install babel-eslint and set the parser option of your config:

npm install babel-eslint --save-dev
{
  "parser": "babel-eslint",
  "extends": ["digital-scientists-base", "digital-scientists-react"],
  "root": true
}

Extending

Any rules added to your global or local .eslintrc.json files will override the rules defined by this package. For example:

{
  "extends": ["digital-scientists-base", "digital-scientists-react"],
  "rules": {
    "semi": [1, "always"],
    "react/prefer-stateless-funciton": 1,
    "react/jsx-no-bind": 0
  }
}

This turns on enforcing the use of semicolons and stateless functional components, and silences warning about binding a function on props.

eslint-config-digital-scientists-react adds support for rules prefaced by react/. You can find a list of supported rules here.

Background

The ESLint linting system is a popular one for its support of ES6 syntax, pluggable rules, automatic rule names in warning messages, and shareable / extendable config files.

Because it defaults to supporting multiple environments (e.g. Node, browsers, Jasmine, Mocha, etc.) it is probably not suitable for general production, where one might want a finer-grained and more restrictive config. However it is easy to override and extend this base config with custom rules, as explained above and in the ESLint docs.

License

MIT