Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@mapbox/eslint-config-mapbox

mapbox21.7kBSD-2-Clause5.0.1

Generic eslint configuration for Mapbox

readme

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.

changelog

Changelog

5.0.1 (2024-07-01)

  • Replace eslint-plugin-node (no longer maintained) with eslint-plugin-n

5.0.0 (2024-03-11)

  • Added node20 (and relative TypeScript) configuration

4.0.0 (2023-04-17)

  • Breaking: eslint major version updated to 8
  • Dependencies moved to peerDependencies
  • Added basic TypeScript configuration for node14

3.0.0 (2020-06-06)

  • Breaking: remove support for Node 8.
  • Breaking: requires ESLint >v7.
  • Change base ecmaVersion from 2018 to 2020.
  • Add node14 configuration.

2.0.1 (2019-06-26)

  • Bugfix for compatibility with eslint v6.

2.0.0 (2019-05-17)

  • Breaking: remove support for Node 4 and 6.
  • Breaking: require eslint >= 5.16.0 and eslint-plugin-node >= 9.0.0.
  • Add support for Node 10 and 12.