Skip to content

Commit bbd2589

Browse files
committed
Добавляет структуру для JS кодгайда. Группирует правила из ESLint
1 parent c091bc6 commit bbd2589

File tree

2 files changed

+207
-0
lines changed

2 files changed

+207
-0
lines changed

app/templates/partials/js/js-recomendations.hbs

Whitespace-only changes.
Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
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

Comments
 (0)