Конфигурация Google для ESLint представляет собой набор готовых правил, основанных на внутреннем руководстве по стилю JavaScript компании Google. Использование такой конфигурации позволяет стандартизировать оформление кода, обеспечить единообразие проекта и сократить количество споров по поводу форматирования и стиля программирования.
Пакет распространяется через конфигурацию eslint-config-google и подключается как расширение (extend) к основной конфигурации ESLint.
Основные особенности:
Для подключения конфигурации необходимо установить ESLint и пакет с правилами Google.
npm install --save-dev eslint eslint-config-google
После установки конфигурация может быть подключена через свойство
extends.
Для старого формата конфигурации (.eslintrc):
{
"extends": ["google"]
}
Для нового Flat Config:
import google from "eslint-config-google";
export default [
google
];
После подключения все правила из набора Google становятся активными автоматически.
Минимальная конфигурация может выглядеть следующим образом:
{
"extends": ["google"]
}
Однако на практике обычно используются дополнительные параметры.
Пример:
{
"extends": ["google"],
"env": {
"browser": true,
"node": true,
"es2023": true
},
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
}
}
Здесь дополнительно задаются:
Одним из наиболее заметных требований Google Style Guide являются двухпробельные отступы.
Правильно:
function calculatePrice(price) {
if (price > 100) {
return price * 0.9;
}
return price;
}
Неправильно:
function calculatePrice(price) {
if (price > 100) {
return price * 0.9;
}
return price;
}
Ошибка возникает из-за использования четырёх пробелов вместо двух.
Соответствующее правило:
"indent": ["error", 2]
Конфигурация Google требует обязательного использования точек с запятой.
Правильно:
const user = "Alex";
const age = 25;
Неправильно:
const user = "Alex"
const age = 25
Правило:
"semi": ["error", "always"]
Такой подход уменьшает вероятность неоднозначностей, связанных с автоматической вставкой точек с запятой механизмом JavaScript.
Google Style Guide предпочитает одинарные кавычки.
Правильно:
const message = 'Hello';
Неправильно:
const message = "Hello";
Соответствующее правило:
"quotes": ["error", "single"]
Исключением являются ситуации, когда строка содержит одинарную кавычку и её экранирование ухудшает читаемость.
Например:
const text = "I'm learning ESLint";
Google рекомендует ограничивать длину строки.
Пример правила:
"max-len": ["error", 100]
Нежелательно:
const text = 'Очень длинная строка, которая значительно превышает установленное ограничение по количеству символов и ухудшает читаемость исходного кода.';
Предпочтительно:
const text =
'Очень длинная строка, которая значительно превышает установленное ' +
'ограничение по количеству символов.';
Контроль длины строк особенно полезен при работе в команде и просмотре изменений в системах контроля версий.
Конфигурация Google поощряет использование современных способов объявления переменных.
Предпочтительно:
const API_URL = 'https://example.com';
Если значение изменяется:
let counter = 0;
counter++;
Нежелательно:
var counter = 0;
Для этого используется правило:
"no-var": "error"
Одной из наиболее полезных проверок является обнаружение неиспользуемых переменных.
Проблемный код:
function getUser() {
const token = getToken();
return {};
}
Переменная token нигде не используется.
ESLint сообщит об ошибке благодаря правилу:
"no-unused-vars": "error"
После исправления:
function getUser() {
return {};
}
Код становится чище и понятнее.
Google уделяет большое внимание единообразию пробелов.
Правильно:
if (isAdmin) {
console.log('Access granted');
}
Неправильно:
if(isAdmin){
console.log('Access granted');
}
Проверяются:
Пример корректного оформления объекта:
const user = {
name: 'John',
age: 30
};
Google требует использование фигурных скобок даже для однострочных блоков.
Правильно:
if (isAdmin) {
deleteUser();
}
Неправильно:
if (isAdmin)
deleteUser();
Или:
if (isAdmin) deleteUser();
Соответствующее правило:
"curly": ["error", "multi-line"]
На практике многие проекты дополнительно усиливают это требование.
Рекомендуется использовать строгое сравнение.
Правильно:
if (count === 0) {
reset();
}
Неправильно:
if (count == 0) {
reset();
}
Правило:
"eqeqeq": "error"
Строгое сравнение предотвращает ошибки, возникающие из-за неявного преобразования типов.
Например:
0 == false;
вернёт:
true
Тогда как:
0 === false;
вернёт:
false
ESLint автоматически обнаруживает избыточные символы.
Проблемный код:
const user = {};
;
;
Правило:
"no-extra-semi": "error"
Исправленный вариант:
const user = {};
Пустые конструкции часто свидетельствуют о незавершённой логике.
Нежелательно:
if (isReady) {
}
Правило:
"no-empty": "error"
Допустимым считается наличие комментария:
if (isReady) {
// Будет реализовано позже
}
Конфигурация Google предъявляет ряд требований к оформлению функций.
Пример:
function calculateTotal(price, tax) {
return price + tax;
}
Для небольших обработчиков часто используются стрелочные функции:
const calculateTotal = (price, tax) => {
return price + tax;
};
Если функция состоит из одного выражения:
const double = (value) => value * 2;
Google Style Guide определяет общие соглашения по именованию.
Используется camelCase.
const firstName = 'Alex';
function getUserData() {
return {};
}
Используется PascalCase.
class UserService {
getUser() {}
}
Используются заглавные буквы и подчёркивания.
const MAX_RETRY_COUNT = 5;
Google рекомендует аккуратное форматирование объектов.
Пример:
const user = {
id: 1,
name: 'John',
role: 'admin'
};
При большом количестве свойств:
const settings = {
enableCache: true,
enableLogging: true,
requestTimeout: 5000,
maxConnections: 10
};
Такой стиль повышает читаемость и упрощает поддержку.
Конфигурация Google может выступать базой для проекта, а отдельные правила могут быть переопределены.
Пример:
{
"extends": ["google"],
"rules": {
"max-len": ["warn", 120],
"quotes": ["error", "double"]
}
}
В данном случае:
ESLint сначала загружает конфигурацию Google, а затем применяет пользовательские переопределения.
Для TypeScript конфигурация Google обычно применяется совместно с пакетом TypeScript ESLint.
Установка:
npm install --save-dev \
eslint \
eslint-config-google \
typescript \
typescript-eslint
Пример Flat Config:
import google from 'eslint-config-google';
import tseslint from 'typescript-eslint';
export default [
...tseslint.configs.recommended,
google
];
Такой подход позволяет одновременно использовать:
Запуск проверки выполняется командой:
npx eslint .
Проверка конкретного файла:
npx eslint src/index.js
Автоматическое исправление:
npx eslint . --fix
ESLint способен автоматически исправлять множество нарушений:
Наиболее распространённым вариантом является использование ESLint в редакторе Visual Studio Code.
После установки расширения ESLint ошибки отображаются непосредственно в процессе редактирования:
const message = "Hello"
Редактор подсветит:
После сохранения документа возможна автоматическая коррекция:
const message = 'Hello';
Интеграция с редактором значительно ускоряет соблюдение требований конфигурации Google и позволяет обнаруживать проблемы ещё до запуска линтера из командной строки.