Home

Awesome

<!-- markdownlint-disable first-line-h1 line-length -->

CircleCI npm version

JavaScript ESLint rules

JavaScript ESLint bundle with best practices and common use rules for writing more consistent code.

"semi": [ "error", "never" ] :godmode: ... the horror :goberserk:

Other similar bundles: XO, eslint-config-airbnb, eslint-config-google, more


<!-- vim-markdown-toc GFM --> <!-- vim-markdown-toc -->

Install

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

Targets

Run npm info "@asd14/eslint-config@latest" peerDependencies to get the base packages needed.

It should be something like:

"eslint": "^8.13.0",
"prettier": "^2.6.0"

Add these packages to your devDependencies in package.json.

Node.js

Link ESLint to node target.

// .eslintrc
{
  "extends": [
    "@asd14/eslint-config/targets/node",
  ]
}

Node.js with Typescript

Link ESLint to node-ts target.

// .eslintrc
{
  "extends": [
    "@asd14/eslint-config/targets/node-ts",
  ]
}

React

Link ESLint to react target.

// .eslintrc
{
  "extends": [
    "@asd14/eslint-config/targets/react",
  ]
}

Inside

Example config

Using babel-eslint and eslint-import-resolver-webpack

.eslintrc

{
    "root"  : true,
    "parser": "babel-eslint",

    "extends": [ "@asd14/eslint-config/targets/react" ],

    "settings": {
        // Use webpack to resolve modules in imports
        "import/resolver": {
            "webpack": {
                "config": "./webpack.config.js",
            },
        },

        // Recommended if you use eslint_d
        "import/cache": {
            "lifetime": 5,
        },

        // List of regex strings that, if matched by a path, will not report
        // the matching module if no exports are found.
        "import/ignore": [ "\\.(sass|scss|less|css)$" ],
    },

    // Custom rules
    "rules": {
    },
}

.prettierrc

{
  "semi": false,
  "printWidth": 80,
  "tabWidth": 2,
  "useTabs": false,
  "singleQuote": false,
  "trailingComma": "es5",
  "bracketSpacing": true,
  "bracketSameLine": true,
  "arrowParens": "avoid"
}

Optional .editorconfig

root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

Changelog

See the releases section for details.