/eslint-config-mapbox

Generic eslint configuration for Mapbox

Primary LanguageJavaScript

eslint-config-mapbox

Build Status

Shared ESLint config for Mapbox engineering teams.

Quick start with Node.js

  1. Install the following dev-dependencies:

    npm install --save-dev \
      @mapbox/eslint-config-mapbox
    
  2. Extend the @mapbox/eslint-config-mapbox config in your .eslintrc (or eslintConfig key in your package.json):

    "eslintConfig": {
      "extends": "@mapbox/eslint-config-mapbox"
    }

    For TypeScript, prefer .eslint.js and use the snippet below:

    'plugins': [
      '@typescript-eslint',
      'prettier'
    ],
    'parserOptions': {
      'tsconfigRootDir': __dirname
    },
    'extends': [
      '@mapbox/eslint-config-mapbox/node20-typescript'
    ]
  3. Specify the version of Node.js your project uses by setting .engines.node in your package.json, according to the settings you choose.

    "engines": {
      "node": ">=20"
    }
  4. Run eslint on your project as part of your test and lint scripts:

    "scripts": {
      "lint": "eslint --ignore-path .eslintignore --ext .js,.ts .",
      "test": "tape test/*.test.js && npm run lint",
    }

Usage

The "Quick start" above exemplifies usage of this package with standard Node.js code.

Depending on the ECMAScript version of your code, whether you are using non-standard syntax like Flow and React's JSX, or other considerations, you may want to extend a variety of configurations provided by this package. eslint-config-mapbox exposes several configurations targeting specific ESLint plugins, each named after the plugin it targets.

To use each plugin-specific configuration, you'll need to do the following:

  • Install as dev-dependencies @mapbox/eslint-config-mapbox, eslint, and any plugins that are used by the configuration(s) you are extending, such as eslint-plugin-node or eslint-plugin-react.

  • Add the configuration(s) you are using to the "extends" array in your project's ESLint configuration, like this:

    {
      "extends": [
        "@mapbox/eslint-config-mapbox/react",
        "@mapbox/eslint-config-mapbox/import",
        "@mapbox/eslint-config-mapbox/promise"
      ]
    }

Plugin-specific configurations

With Prettier

If you are using Prettier to format your JS, install eslint-config-prettier and add it at the end of your "extends" array. It will turn off all ESLint rules related to the code-style preferences that Prettier already addresses.