🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

eslint-config-lydell

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-config-lydell

Kinda strict Prettier-friendly ESLint config.

latest
Source
npmnpm
Version
14.0.0
Version published
Maintainers
1
Created
Source

eslint-config-lydell Build Status

Kinda strict Prettier-friendly ESLint config.

  • Only rules by default. No other config.
    • Optional: A less confusing browser env.
  • No rules that that are unnecessary or might conflict with Prettier.
  • Find errors.
  • Avoid potential problems.
  • Forbid confusing code.
  • Prefer ES2015+ syntax.
  • Avoid rules that require arbitrary configuration.

Installation

Install eslint-config-lydell:

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

Then, merge in the rules in your .eslintrc.js file. (You have to use .js for your ESLint config; see below.)

const baseRules = require("eslint-config-lydell");

module.exports = {
  // Mix in rules from this config:
  rules: Object.assign({}, baseRules(), {
    // Your own rules here.
  }),
  // Optional: Less confusing `browser` env:
  globals: Object.assign({}, baseRules.browserEnv(), {
    // Your own globals here.
  }),
};

A few ESLint plugins are supported as well:

Note that you need to install those plugins yourself. (They are not included in the config because of ESLint issue #3458.)

Enable rules for the plugins you use like so:

baseRules({ flow: true, import: true, jest: true, react: true });

The reason this config is require:d instead of using the extends field (which is the standard), is to easily allow flow to opt out from some base and react rules, for example.

The config also comes with a browser env (globals), that is exactly like the standard browser env in ESLint but without all the weird stuff like name and length. (Prefix uncommon globals with window. or add them to your config.)

Example configuration

This includes some extra recommended plugins, that don't need a ton of configuration:

It also shows how to set up linting for config files, Storybook stories and Jest tests.

const baseRules = require("eslint-config-lydell");

module.exports = {
  // Prevent config files outside the repo from interfering.
  root: true,
  plugins: [
    // Provides rules for these plugins:
    "import",
    "jest",
    "flowtype",
    "react",
    "react-hooks",

    // Recommended plugins:
    "prettier",
    "simple-import-sort",

    // Recommended if using CSS Modules or Flow:
    "css-modules",
    "flowtype-errors",
  ],
  // Alternatively, use `parser: "babel-eslint"` (for Flow support, or
  // experimental features).
  parserOptions: {
    sourceType: "module",
    ecmaFeatures: {
      jsx: true,
    },
  },
  env: {
    es6: true,
    // node: true, // For Node.js apps.
    // browser: true, // NOT recommended; see below.
  },
  // Less confusing `browser` env (for browser apps):
  globals: Object.assign({}, baseRules.browserEnv(), {
    DEBUG: false,
  }),
  rules: Object.assign(
    {},
    // Merge in base rules, and enable the extra rules you want.
    baseRules({ flow: true, import: true, jest: true, react: true }),
    // Add more rules and override rules here:
    {
      "css-modules/no-undef-class": "error",
      "flowtype-errors/show-errors": "error",
      "prettier/prettier": "error",
      "simple-import-sort/sort": "error",
    }
  ),
  // Example on how to configure certain config files and such.
  overrides: [
    {
      // Config files.
      files: [".*.js", "*.config.js", ".storybook/*.js"],
      env: { node: true },
      rules: {
        "flowtype/require-valid-file-annotation": "off",
      },
    },
    {
      // Jest tests.
      files: ["*.test.js"],
      env: { jest: true },
      // You can also enable Jest rules only for test files if you want.
      rules: baseRules({ builtin: false, jest: true }),
    },
    {
      // Storybook stories.
      files: ["stories.js"],
      globals: {
        module: false,
      },
    },
    {
      // Node.js code.
      files: ["server/**/*.js"],
      env: { node: true },
      rules: {
        "import/order": ["error", { "newlines-between": "always" }],
      },
    },
  ],
  // If you use React:
  settings: {
    react: {
      version: "detect",
    },
  },
};

Recommended .eslintignore:

# Un-ignore config files.
!/*.js
!/.storybook/
!/**/.eslintrc.js

# You might want to ignore some directories:
# /build/

Recommended prettier.config.js:

module.exports = {
  trailingComma: "es5",
};

License

MIT.

Keywords

eslint

FAQs

Package last updated on 26 Feb 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts