eslint-config-codely
Version:
Codely's ESLint and Prettier Config
102 lines (97 loc) • 2.99 kB
JavaScript
import babelParser from "@babel/eslint-parser";
import js from "@eslint/js";
import eslintPluginImportX from "eslint-plugin-import-x";
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
import eslintPluginSimpleImportSort from "eslint-plugin-simple-import-sort";
import eslintPluginUnusedImports from "eslint-plugin-unused-imports";
import globals from "globals";
export default [
js.configs.recommended,
eslintPluginPrettierRecommended,
{
languageOptions: {
ecmaVersion: "latest",
sourceType: "module",
parser: babelParser,
parserOptions: {
requireConfigFile: false,
},
globals: {
...globals.browser,
...globals.node,
},
},
plugins: {
"simple-import-sort": eslintPluginSimpleImportSort,
import: eslintPluginImportX,
"unused-imports": eslintPluginUnusedImports,
},
rules: {
// error prevention
"array-callback-return": ["error", { checkForEach: true }],
"no-await-in-loop": "error",
"no-constant-binary-expression": "error",
"no-constructor-return": "error",
"no-promise-executor-return": "error",
"no-self-compare": "error",
"no-template-curly-in-string": "error",
"no-unmodified-loop-condition": "error",
"no-unreachable-loop": "error",
"no-unused-private-class-members": "error",
"no-use-before-define": [
"error",
{
functions: false,
classes: true,
variables: true,
allowNamedExports: false,
},
],
"require-atomic-updates": "error",
// good practises
camelcase: ["error", { properties: "never" }],
eqeqeq: "error",
"new-cap": ["error", { capIsNew: false }],
"no-array-constructor": "error",
"no-console": ["error", { allow: ["error"] }],
"no-else-return": ["error", { allowElseIf: false }],
"no-extend-native": "error",
"no-lonely-if": "error",
"no-param-reassign": "error",
"no-return-assign": "error",
"no-throw-literal": "error",
"no-var": "error",
"object-shorthand": "error",
"prefer-const": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
"prefer-template": "error",
radix: "error",
yoda: "error",
// style
curly: "error",
"lines-between-class-members": ["error", "always", { exceptAfterSingleLine: true }],
"padding-line-between-statements": ["error", { blankLine: "always", prev: "*", next: "return" }],
// plugins
"import/first": "error",
"import/newline-after-import": "error",
"import/no-duplicates": "error",
"import/no-unresolved": "error",
"import/no-webpack-loader-syntax": "error",
"prettier/prettier": ["error", { printWidth: 100, useTabs: true }],
"simple-import-sort/exports": "error",
"simple-import-sort/imports": "error",
"unused-imports/no-unused-imports": "error",
"no-unused-vars": "off",
"unused-imports/no-unused-vars": [
"warn",
{
vars: "all",
varsIgnorePattern: "^_",
args: "after-used",
argsIgnorePattern: "^_",
},
],
},
},
];