@nighttrax/eslint-config-base
Version:
NiGhTTraX's ESLint base config
100 lines (82 loc) • 2.69 kB
JavaScript
const testOverrides = require("./tests.js");
const configOverrides = require("./configs.js");
module.exports = {
extends: [
"eslint-config-airbnb-base/rules/best-practices",
"eslint-config-airbnb-base/rules/errors",
"eslint-config-airbnb-base/rules/node",
"eslint-config-airbnb-base/rules/style",
"eslint-config-airbnb-base/rules/variables",
"eslint-config-airbnb-base/rules/es6",
]
.map(require.resolve)
.concat([
// This disables all stylistic rules from the above.
"prettier",
"plugin:@typescript-eslint/recommended",
]),
plugins: ["prettier", "import", "@typescript-eslint"],
parser: "@typescript-eslint/parser",
settings: {
"import/resolver": {
// use <root>/tsconfig.json
typescript: {},
},
},
rules: {
"prettier/prettier": "error",
"import/no-extraneous-dependencies": [
"error",
{
devDependencies: [...testOverrides.files, ...configOverrides.files],
},
],
"one-var": "off",
"one-var-declaration-per-line": "off",
"prefer-arrow-callback": "off",
strict: "off",
"no-use-before-define": ["off", { functions: false }],
"no-underscore-dangle": "off",
"no-plusplus": "off",
// Enforce curly braces even for one liners.
curly: ["error", "all"],
"padding-line-between-statements": [
"error",
{ blankLine: "always", prev: "*", next: "return" },
{ blankLine: "always", prev: "*", next: "block-like" },
{ blankLine: "always", prev: "*", next: "if" },
{ blankLine: "always", prev: "*", next: "export" },
],
// These core rules don't work well on TS code, use the ones from the plugin instead.
"no-undef": "off",
"no-unused-vars": "off",
"no-shadow": "off",
"no-redeclare": "off",
"no-empty-function": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{
// Allow `let { ignored, ...rest} = foo`.
ignoreRestSiblings: true,
},
],
// Allow `constructor(private foo: number) {}`
"no-useless-constructor": "off",
// Allow stateless class methods, instead of forcing them to be static.
"class-methods-use-this": 0,
// TS will take care of this, and the rule disallows the following _valid_ pattern:
// function(foo = 'bar', baz?: number) {}
"default-param-last": "off",
// The strictFunctionTypes compiler flag only works if you define your methods properly.
"@typescript-eslint/method-signature-style": "error",
},
overrides: [
testOverrides,
{
files: ["**/*.js"],
rules: {
"@typescript-eslint/no-var-requires": "off",
},
},
],
};