|
| 1 | +# Синтаксис и лексика |
| 2 | +## Отступы, пробелы и переносы |
| 3 | +'indent': ['error', 2, { |
| 4 | + SwitchCase: 1, |
| 5 | + // continuation indent |
| 6 | + VariableDeclarator: 2, |
| 7 | + MemberExpression: 2, |
| 8 | + FunctionDeclaration: {parameters: 2}, |
| 9 | + FunctionExpression: {parameters: 2}, |
| 10 | + CallExpression: {arguments: 2} |
| 11 | +}], |
| 12 | +'no-irregular-whitespace': 'error', // eslint:recommended |
| 13 | +'no-unexpected-multiline': 'error', // eslint:recommended |
| 14 | +'no-multi-spaces': 'error', |
| 15 | +'brace-style': 'error', |
| 16 | +'block-spacing': ['error', 'always'], |
| 17 | +'array-bracket-spacing': ['error', 'never'], |
| 18 | +'comma-spacing': 'error', |
| 19 | +'comma-style': 'error', |
| 20 | +'eol-last': 'error', |
| 21 | +'no-trailing-spaces': 'error', |
| 22 | +'object-curly-spacing': 'error', |
| 23 | +'no-mixed-spaces-and-tabs': 'error', // eslint:recommended |
| 24 | +'no-multiple-empty-lines': ['error', {max: 2}], |
| 25 | +'linebreak-style': 'off', // check this in git |
| 26 | +'computed-property-spacing': 'error', |
| 27 | +'func-call-spacing': 'error', |
| 28 | +'key-spacing': 'error', |
| 29 | +'keyword-spacing': 'error', |
| 30 | +'padded-blocks': ['off', 'never'], |
| 31 | +'semi-spacing': 'error', |
| 32 | +'space-before-blocks': 'error', |
| 33 | +'space-before-function-paren': ['error', {named: 'never', anonymous: 'always'}], |
| 34 | +'spaced-comment': ['error', 'always'], |
| 35 | +'generator-star-spacing': ['error', 'after'], |
| 36 | +'rest-spread-spacing': 'error', |
| 37 | +'yield-star-spacing': ['error', 'after'] |
| 38 | + |
| 39 | +## Строки |
| 40 | +'no-multi-str': 'error', // запрет на использование переносов в ES5-строках |
| 41 | +'no-octal-escape': 'error', |
| 42 | +'quote-props': ['error', 'consistent'], |
| 43 | +'quotes': ['error', 'single', {allowTemplateLiterals: true}], |
| 44 | + |
| 45 | +## Числа |
| 46 | +'no-floating-decimal': 'error', // запрет на опускание нуля |
| 47 | +'no-octal': 'error', //default |
| 48 | + |
| 49 | +## Литералы |
| 50 | +'no-array-constructor': 'error', |
| 51 | +'no-new-object': 'error', |
| 52 | + |
| 53 | +### Объекты |
| 54 | +'no-dupe-keys': 'error', |
| 55 | +'no-dupe-args': 'error', |
| 56 | +'no-duplicate-case': 'error', |
| 57 | + |
| 58 | +### Массивы |
| 59 | + |
| 60 | +## Операторы |
| 61 | +'space-infix-ops': 'error', |
| 62 | +'space-unary-ops': ['error', {words: true, nonwords: false}], |
| 63 | + |
| 64 | +# Именование |
| 65 | +'no-label-var': 'error', |
| 66 | +'camelcase': 'error', |
| 67 | +'no-shadow': 'error', |
| 68 | +'no-shadow-restricted-names': 'error', |
| 69 | +'no-undef': 'error', //default // нельзя использовать необъявленные переменные |
| 70 | +'no-undef-init': 'error', // нельзя создавать переменные без значения |
| 71 | +'no-undefined': 'error', // нельзя использовать значение undefined |
| 72 | +'new-cap': 'error', |
| 73 | + |
| 74 | +# Конструкции языка |
| 75 | + |
| 76 | +## Условные операторы |
| 77 | +## Циклы |
| 78 | +## Функции |
| 79 | +## Переменные |
| 80 | +## Классы |
| 81 | +'constructor-super': 'error', // eslint:recommended |
| 82 | + |
| 83 | + |
| 84 | +# Предотвращение ошибок |
| 85 | +'semi': 'error', |
| 86 | +'unicode-bom': 'warn', |
| 87 | +'curly': ['error', "all"], |
| 88 | +'no-empty': 'error', |
| 89 | +'strict': ['error', 'global'], |
| 90 | + |
| 91 | +## Условные операторы |
| 92 | +'yoda': ['error', "never"], |
| 93 | +'eqeqeq': 'error', // использование строгого сравнения |
| 94 | +'no-cond-assign': 'error', // eslint:recommended // запрет на присвоение в блоке условия |
| 95 | +'no-unsafe-negation': 'error', // небезопасное отрицание (использование ! в in или instanceof без скобок) |
| 96 | +'use-isnan': 'error', |
| 97 | +'no-fallthrough': 'error', // запрет на проваливание в switch |
| 98 | +'no-nested-ternary': 'error', |
| 99 | + |
| 100 | +## Функции |
| 101 | +'consistent-return': 'error', // функция не возвращает undefined, особенно если есть другой return |
| 102 | +'no-return-assign': 'error', |
| 103 | +'arrow-parens': ['error', 'always'], |
| 104 | + |
| 105 | +## Классы |
| 106 | +'no-this-before-super': 'error', // eslint:recommended |
| 107 | + |
| 108 | + |
| 109 | +## Объявление переменных и функций |
| 110 | +'no-var': 'error', |
| 111 | +'no-redeclare': 'error', //default |
| 112 | +'one-var': ['error', { |
| 113 | + var: 'never', |
| 114 | + let: 'never', |
| 115 | + const: 'never' |
| 116 | +}], |
| 117 | + |
| 118 | +### Объявление функций |
| 119 | +'no-func-assign': 'error', |
| 120 | +'no-inner-declarations': ["error", "functions"], // запрет на объявление значений внутри блоков |
| 121 | +'no-new-func': 'error', // запрет на создание функций через конструктор Function |
| 122 | +'prefer-rest-params': 'error', |
| 123 | +'prefer-spread': 'error', |
| 124 | + |
| 125 | +### Создание значений |
| 126 | +'no-obj-calls': 'error', // запрет на создание значений с помощью конструкторов без new (Math(), JSON(), Reflect()). |
| 127 | +'no-sparse-arrays': 'error', // запрет на массивы с пропусками |
| 128 | +'comma-dangle': ['error', 'only-multiline'], |
| 129 | +'no-new-wrappers': 'error', // запрет на вызов конструкторов для примитивов |
| 130 | +'new-parens': 'error', |
| 131 | +'no-new-symbol': 'error', // eslint:recommended |
| 132 | + |
| 133 | +## Хорошие практики |
| 134 | +'no-with': 'error', |
| 135 | +'no-alert': 'error', |
| 136 | +'no-eval': 'error', |
| 137 | +'no-implied-eval': 'error', // запрет на код в строчках (например timeout) |
| 138 | +'no-script-url': 'error', // запрет на использование протокола javascript: |
| 139 | +'no-new': 'error', // запрет на использование конструкторов для сайдэффектов |
| 140 | + |
| 141 | +### Манкипатчинг |
| 142 | +'no-extend-native': 'error', // запрет на манкипатчинг |
| 143 | +'no-global-assign': 'error', |
| 144 | + |
| 145 | +### Контекст |
| 146 | +'no-extra-bind': 'error', // запрет на использование bind там где не нужно (например IIFE) |
| 147 | +'no-invalid-this': 'error', // запрет на использование this вне объектов и классов |
| 148 | + |
| 149 | +### Переменные |
| 150 | +'no-delete-var': 'error', //eslint:recommended |
| 151 | + |
| 152 | +## Приведение типов |
| 153 | +'no-extra-boolean-cast': 'error', |
| 154 | +'valid-typeof': 'error', // проверка на правильный тип в typeof |
| 155 | +'radix': 'error', |
| 156 | + |
| 157 | +### Зафиксированный if (if..true) |
| 158 | +'no-constant-condition': 'error', |
| 159 | + |
| 160 | +# Модульность и области видимости |
| 161 | +## Глобальная область видимости |
| 162 | +## Системы сборки |
| 163 | + |
| 164 | +# Чистый код |
| 165 | +## Лишние символы (пробелы, точки с запятой и прочее) |
| 166 | +'no-extra-semi': 'error', |
| 167 | + |
| 168 | +## Отладчик и консоль |
| 169 | +'no-console': 'error', |
| 170 | +'no-debugger': 'error', |
| 171 | + |
| 172 | +## Неиспользуемый код |
| 173 | +'no-unreachable': 'error', |
| 174 | +'no-unused-vars': ['error', {args: 'none'}], // eslint:recommended |
| 175 | +'no-unused-expressions': 'error', |
| 176 | + |
| 177 | +## Обработка ошибок и исключения |
| 178 | +'no-throw-literal': 'error', // eslint:recommended // запрет на выброс исключениями не объектов Error а литералов |
| 179 | + |
| 180 | +### try..catch с пустым try |
| 181 | +'no-ex-assign': 'error' |
| 182 | + |
| 183 | +# Документирование |
| 184 | +'valid-jsdoc': ['error', { |
| 185 | + requireParamDescription: false, |
| 186 | + requireReturnDescription: false, |
| 187 | + requireReturn: false, |
| 188 | + prefer: {returns: 'return'} |
| 189 | +}], |
| 190 | + |
| 191 | +# Прочее |
| 192 | +'guard-for-in': 'error', // Итерирование по объектам через hasOwnProp |
| 193 | +'no-caller': 'error', // запрет на использование caller/callee в функциях |
| 194 | +'no-iterator': 'error', // запрет на использование __iterator__ |
| 195 | +'no-proto': 'error', // запрет на использование __proto__ |
| 196 | +'no-labels': 'error', |
| 197 | +'no-lone-blocks': 'error', |
| 198 | +'no-sequences': 'error', |
| 199 | + |
| 200 | +## Регулярные выражения |
| 201 | +'no-control-regex': 'error', |
| 202 | +'no-empty-character-class': 'error', |
| 203 | +'no-invalid-regexp': 'error', // нельзя создавать объект RegExp из неправильной строки |
| 204 | +'no-regex-spaces': 'error', // запрет на использование нескольких пробелов в регулярках. Вместо этого предлагается использовать {3} |
| 205 | + |
| 206 | +# node.js |
| 207 | +'no-process-exit': 'error', |
0 commit comments