.eslintrc.js•2.63 kB
export default {
env: {
es2022: true,
node: true,
},
extends: ["eslint:recommended"],
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
rules: {
// Основные правила стиля
indent: ["error", 2],
"linebreak-style": ["error", "unix"],
quotes: ["error", "double"],
semi: ["error", "always"],
// Пробелы и отступы
"no-trailing-spaces": "error",
"eol-last": "error",
"comma-dangle": ["error", "always-multiline"],
"comma-spacing": ["error", { before: false, after: true }],
"key-spacing": ["error", { beforeColon: false, afterColon: true }],
"object-curly-spacing": ["error", "always"],
"array-bracket-spacing": ["error", "never"],
// Переменные
"no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
"no-var": "error",
"prefer-const": "error",
"prefer-arrow-callback": "error",
// Функции
"arrow-spacing": "error",
"func-call-spacing": ["error", "never"],
"space-before-function-paren": [
"error",
{
anonymous: "always",
named: "never",
asyncArrow: "always",
},
],
// Операторы
"space-infix-ops": "error",
"space-unary-ops": ["error", { words: true, nonwords: false }],
// Блоки кода
"brace-style": ["error", "1tbs", { allowSingleLine: true }],
"keyword-spacing": "error",
"space-before-blocks": "error",
// Строки
"template-curly-spacing": "error",
"no-template-curly-in-string": "error",
// Консоль и отладка
"no-console": "warn",
"no-debugger": "error",
// Лучшие практики
eqeqeq: ["error", "always"],
"no-eval": "error",
"no-implied-eval": "error",
"no-new-func": "error",
"no-return-assign": "error",
"no-sequences": "error",
"no-throw-literal": "error",
"no-useless-concat": "error",
"prefer-template": "error",
// ES6+ особенности
"no-duplicate-imports": "error",
"prefer-destructuring": [
"error",
{
array: true,
object: true,
},
{
enforceForRenamedProperties: false,
},
],
// Специфичные правила для Node.js
"no-process-exit": "error",
"handle-callback-err": "error",
},
overrides: [
{
files: ["test*.js", "*.test.js", "tests/**/*.js"],
rules: {
"no-console": "off",
},
},
{
files: ["*.config.js", "*.conf.js"],
rules: {
"no-console": "off",
},
},
],
};