Code Monkey home page Code Monkey logo

eslint-config-callstack's Introduction

@callstack/eslint-config

Callstack ESLint config for React Native, React and Node.js projects, utilizing Flow, TypeScript, Prettier and Jest with sensible defaults. Supports both eslintrc and flat config.

Installation

With Yarn:

yarn add --dev eslint @callstack/eslint-config

Or with npm:

npm install --save-dev eslint @callstack/eslint-config

Usage

You can choose one of the following environments to work with by extending your ESLint config (eslint.config.mjs for flat config, or .eslintrc / eslintConfig field in package.json for the eslintrc config style) with @callstack config tailored to your project.

React Native config

Usage:

eslintrc format (ESLint < v9)

{
  "extends": "@callstack"
}

flat config format (eslint.config.mjs, ESLint 9+)

import callstackConfig from '@callstack/eslint-config/react-native.flat.js';

export default [
  {
    ignores: [
      // ignored files go here
    ],
  },
  ...callstackConfig,
  {
    rules: {
      // your custom rules
    },
  },
];

Plugins used:

Additionally, it sets "react-native/react-native" environment and native platform extensions to resolve.

React config

Usage:

eslintrc format (ESLint < v9)

{
  "extends": "@callstack/eslint-config/react"
}

flat config format (eslint.config.mjs, ESLint 9+)

import callstackConfigReact from '@callstack/eslint-config/react.flat.js';

export default [
  {
    ignores: [
      // ignored files go here
    ],
  },
  ...callstackConfigReact,
  {
    rules: {
      // your custom rules
    },
  },
];

Plugins used:

Node config

Usage:

eslintrc format (ESLint < v9)

{
  "extends": "@callstack/eslint-config/node"
}

flat config format (eslint.config.mjs, ESLint 9+)

import callstackConfigNode from '@callstack/eslint-config/node.flat.js';

export default [
  {
    ignores: [
      // ignored files go here
    ],
  },
  ...callstackConfigNode,
  {
    rules: {
      // your custom rules
    },
  },
];

Plugins used:

Additionally, it sets es6 and node environments.

Example of extending the configuration

eslintrc format (ESLint < v9)
{
  "extends": "@callstack",
  "rules": {
    "global-require": 0,
    "prefer-destructuring": 0
  }
}
flat config format (eslint.config.mjs, ESLint 9+)
import callstackConfig from '@callstack/eslint-config/react-native.flat.js';

export default [
  ...callstackConfig,
  {
    rules: {
      'global-require': 0,
      'prefer-destructuring': 0,
    },
  },
];

TypeScript

TypeScript is supported out-of-the-box, including importing JS files from TS files and vice-versa. All you need to do is to make sure you have typescript module installed.

Then when running ESLint add --ext '.js,.ts' (you might need also .jsx, .tsx) option, for example:

yarn eslint --ext '.js,.ts' ./src

parserOptions.project is set to ./tsconfig.json. You may need to adjust that.

To do so, you'll need to override our setup for TS files in your ESLint config:

eslintrc format (ESLint < v9)
{
  "overrides": [
    {
      "files": ["*.ts", "*.tsx"],
      "parserOptions": {
        "project": "./packages/**/tsconfig.json"
      }
    }
  ]
}
flat config format (eslint.config.mjs, ESLint 9+)

In the flat config, just append another configuration object to the array and be sure to import the /react-native.flat file:

import callstackConfig from '@callstack/eslint-config/react-native.flat.js';
import tsEslintParser from '@typescript-eslint/parser';

export default [
  ...callstackConfig,
  {
    files: ['**/*.ts', '**/*.tsx'],
    languageOptions: {
      parser: tsEslintParser,
      parserOptions: { project: './packages/**/tsconfig.json' },
    },
  },
];

VSCode

If you're VSCode user, you may find adding this config to your .vscode/settings.json helpful:

{
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact"
  ]
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.