-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from hhru/HH-60889
HH-60889 add eslint
- Loading branch information
Showing
4 changed files
with
173 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
*.esproj | ||
.idea | ||
.DS_Store | ||
node_modules | ||
npm-debug.log |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
module.exports = { | ||
// https://github.com/airbnb/javascript/tree/master/packages/eslint-config-airbnb-base | ||
"extends": "airbnb-base", | ||
"globals": { | ||
"ga": true, | ||
"yaCounter": true, | ||
"ignoreCounters": true, | ||
"jsx": true, | ||
"define": true, | ||
"jsxComponents": true, | ||
"module": true | ||
}, | ||
"plugins": [ | ||
"dollar-sign" | ||
], | ||
"parserOptions": { | ||
// Мы еще не используем ES6 модули, | ||
// поэтому эта настройка нужна для того чтобы корректно отрабатывало правило `strict` | ||
"sourceType": "script" | ||
}, | ||
"rules": { | ||
"indent": ["error", 4, { "SwitchCase": 1, "VariableDeclarator": 1 }], | ||
"no-return-assign": 0, | ||
"max-len": ["error", 120], | ||
// Мы не особо хотим делать так: | ||
// const data = []; | ||
// data[123] = '3' | ||
// Логичнее смотрится: | ||
// let data = []; | ||
// data[123] = '3' | ||
// http://eslint.org/docs/rules/prefer-const | ||
"prefer-const": 0, | ||
"arrow-body-style": 0, | ||
"no-unused-expressions": ["error", { "allowShortCircuit": true }], | ||
"default-case": 0, | ||
"padded-blocks": 0, | ||
// Последовательность в том, что функция возвращает | ||
// http://eslint.org/docs/rules/consistent-return | ||
"consistent-return": ["warn"], | ||
// Вызывать до декларирования можно функции, ибо hoisting | ||
"no-use-before-define": ["error", { "functions": false }], | ||
"no-confusing-arrow": 0, | ||
"wrap-iife": ["error", "inside"], | ||
"no-restricted-syntax": [ | ||
"error", | ||
"DebuggerStatement", | ||
"WithStatement" | ||
], | ||
"func-names": 0, | ||
"space-before-function-paren": ["error", "never"], | ||
"keyword-spacing": ["error", {"overrides": { | ||
"catch": { | ||
"after": true | ||
} | ||
}}], | ||
"no-console": ["error", { "allow": ["warn", "error"] }], | ||
"no-shadow": 0, | ||
|
||
// Мы используем AMD модули | ||
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-amd.md | ||
"import/no-amd": 0, | ||
// Все еще используем 'use strict' | ||
// http://eslint.org/docs/rules/strict | ||
"strict": ["error", "function"], | ||
// Не обязательно декларировать переменные в начале функции | ||
"vars-on-top": 0, | ||
// Мы используем нижнее подчеркивание для "приватных" методов у объектов | ||
// http://eslint.org/docs/rules/no-underscore-dangle | ||
"no-underscore-dangle": 0, | ||
// Мы не разрешаем пробелы до и после унарных операторов: !, !!, ++, --, ~ | ||
"space-unary-ops": ["error"], | ||
// У нас нет пробелов внутри фигурных скобок | ||
"object-curly-spacing": ["error", "never"], | ||
// Оператор должен стоять перед переводом каретки | ||
"operator-linebreak": ["error", "after"], | ||
// Переменные с jQuery объектами должны начинаться с символа $ | ||
"dollar-sign/dollar-sign": [2, "ignoreProperties"], | ||
// Мы поддерживаем 2 варианта переменной для контекста: "that", "self" | ||
"consistent-this": ["error", "that", "self"], | ||
// Не проверяем на первую заглавную букву на свойствах объектов | ||
// иначе использование $.Deferred(); будет считаться ошибкой | ||
"new-cap": ["error", { | ||
"properties": false | ||
}], | ||
// require можно вызывать не только из начала файла | ||
"global-require": 0, | ||
// Не обязываем переносить каждое звено цепочки на новую строчку | ||
"newline-per-chained-call": 0, | ||
// Не выводим ошибку при переназначении аргументов функции (только предупреждение) | ||
// Потому что хотим использовать вот так: | ||
// function(options) { | ||
// options = options || {}; | ||
// } | ||
"no-param-reassign": ["warn"], | ||
// Не используем кавычки для свойств объектов, только если без них никуда либо это зарезервированное слово | ||
"quote-props": ["error", "as-needed", { | ||
"keywords": true | ||
}], | ||
// Не выводим ошибку если в цикле for in не проверяется на hasOwnProperty (только предупреждение) | ||
"guard-for-in": ["warn"], | ||
|
||
|
||
/* | ||
* Ниже перечислены правила, которые нужно убрать после перехода на es6 | ||
*/ | ||
|
||
// Запятую в последнем свойстве объекта не ставим | ||
// Из-за того, что поддерживаем IE8 - выводим ошибку | ||
"comma-dangle": ["error", "never"], | ||
// Для колбеков "толстые стрелки" выглядят компактнее, | ||
// но у нас много легаси просто с безымянными функциями, поэтому не будем на этом настаивать | ||
"prefer-arrow-callback": 0, | ||
// Пока не настаиваем на использовании let | ||
"no-var": 0, | ||
// Пока не настаиваем на использовании ...rest | ||
"prefer-rest-params": 0, | ||
// Можно без строк шаблонов | ||
"prefer-template": 0, | ||
// Легаси, не настаиваем на сокращенной форме объекта | ||
// http://eslint.org/docs/rules/object-shorthand | ||
"object-shorthand": 0 | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
{ | ||
"name": "eslint-config-hh", | ||
"repository": "hhru/eslint-config-hh", | ||
"version": "1.0.0", | ||
"main": "index.js", | ||
"description": "HH.ru eslint configuration", | ||
"scripts": {}, | ||
"license": "MIT", | ||
"bugs": { | ||
"url": "https://github.com/hhru/eslint-config-hh/issues" | ||
}, | ||
"homepage": "https://github.com/hhru/eslint-config-hh#readme", | ||
"dependencies": { | ||
"eslint": "~2.13.1", | ||
"eslint-config-airbnb-base": "~3.0.1", | ||
"eslint-plugin-dollar-sign": "0.0.5", | ||
"eslint-plugin-import": "~1.9.2" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# eslint конфиги HH.ru | ||
|
||
Репозиторий, содержит файлы конфигурации для eslint. | ||
|
||
## Установка конфигов | ||
|
||
Все проекты подтягивают этот репозиторий по зависимости после запуска `npm install` | ||
|
||
Достаточно, чтобы в проекте был файл `.eslintrc`: | ||
|
||
```json | ||
{ | ||
"extends": "hh" | ||
} | ||
``` | ||
|
||
За основу мы берем базовую конфигурацию [`eslint-config-airbnb-base`](https://github.com/airbnb/javascript/tree/master/packages/eslint-config-airbnb-base) и оверрайдим правила, которые отличаются. | ||
|
||
На данный момент упразднены правила рассчитанные на ES6. После того как перейдем на него имеет смысл все "причесать". | ||
|
||
## История изменений | ||
|
||
### 1.0.0 | ||
|
||
* Первичный релиз | ||
* Без поддержки es6 |