Giter Site home page Giter Site logo

keithamus / eslint-config-strict Goto Github PK

View Code? Open in Web Editor NEW
26.0 3.0 9.0 253 KB

ESLint sharable config for strict linting

JavaScript 100.00%
eslint shareable-configs best-practices eslint-config eslint-rules code-style javascript linter-config

eslint-config-strict's Introduction

eslint-config-strict

ESLint sharable config for strict linting.

Rules

Every rule is documented, justified, and has examples within the rules folder. If you feel like a rule is wrong, take a read of this file, or refer others to it!

Installation

Install this config package and ESLint:

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

If you're using npm < v3 you'll also need to install all of the dependencies of this project:

$ npm install --save-dev eslint eslint-plugin-filenames

If you use React, also have a look at the eslint-config-strict-react plugin.

Usage

This set of configs is meant to be extended on a per-project basis as necessary using ESLint's shareable configs feature.

To start, you probably want to use pick either strict/es6 or strict/es5 (note: strict can be used as an alias for strict/es6). You can then layer additional rulesets on top using eslint, the additive rules are:

This package includes the following configurations:

  • strict/mocha (adds env.mocha true, assert, expect, must and should are added as globals, and func-names, padded-blocks and max-nested-callbacks rules are explicitly turned off)
  • strict/browser (simply sets env.browser to true)
  • strict/d3 (relaxes strict identifier rules, allowing for identifiers like d3, d, dx, dy)
  • strict/babel (for use with the eslint-plugin-babel plugin)

How to use

Simply define your .eslintrc (or add a eslintConfig object to package.json) like so:

{
  "extends": ["strict"]
}

Add any additional plugins you want, for example:

{
  "extends": ["strict", "strict/browser"]
}

Also, you can define a test/.eslintrc to override the projects main one:

{
  "extends": ["strict", "strict/browser", "strict/mocha"]
}

If your project is a front-end project and you're not transpiling ES6 code, you might have an .eslintrc that looks like this:

{
  "extends": ["strict/es5", "strict/browser"]
}

Feel free to define additional globals or rules, or override them as you see fit:

{
  "extends": ["strict"],

  "globals": {
    "blarg": true
  },

  "rules": {
      "eol-last": 0
  }
}

For more details about how shareable configs work, see the ESLint documentation.

eslint-config-strict's People

Contributors

futuraprime avatar greenkeeperio-bot avatar itsjw avatar keithamus avatar lydell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

eslint-config-strict's Issues

no-negated-in-lhs / no-unsafe-negation

rules/no-negated-in-lhs.md exists, but no-negated-in-lhs does not seem to be mentioned anywhere else. That rule is also deprecated and replaced by no-unsafe-negation. That feels like a very useful rule, which I'd like to see enabled in eslint-config-strict.

I would have made a PR if I would have know what to do here :)

no-dupe-keys in Mongo Query

Found one instance where this causes a problem. When building a dynamic mongo query operators such as $or may need to be duplicated. Unless there's another way to write it.

const query = {
    id: input.id,
    state: input.state,
    $or: [
      {
        floodZone: { $exists: false }
      },
      {
        floodZone: { $exists: true, $in: [input.floodZone] }
      }
    ],
    $or: [
      {
        yearBuilt: { $exists: false }
      },
      {
        'yearBuilt.max': { $exists: true, $lte: input.yearBuilt }
      }
    ]
  };

prefer-reflect is deprecated

http://eslint.org/docs/rules/prefer-reflect

This rule was deprecated in ESLint v3.9.0 and will not be replaced. The original intent of this rule now seems misguided as we have come to understand that Reflect methods are not actually intended to replace the Object counterparts the rule suggests, but rather exist as low-level primitives to be used with proxies in order to replicate the default behavior of various previously existing functionality.

Make decisions on currently unused rules

$ ./node_modules/.bin/eslint-find-rules es6.js --unused

unused rules

capitalized-comments                       class-methods-use-this
func-name-matching                         max-lines
max-statements-per-line                    no-await-in-loop
no-multi-assign                            no-native-reassign
no-negated-in-lhs                          no-prototype-builtins
no-restricted-properties                   no-return-await
no-spaced-func                             no-unsafe-negation
no-useless-escape                          no-useless-return
prefer-destructuring                       prefer-promise-reject-errors
require-await                              sort-keys
unicode-bom

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.