Настройка параметров языка
Экосистема JavaScript включает множество сред выполнения, версий, расширений и фреймворков. Для каждого из них могут поддерживаться разные варианты синтаксиса и глобальные переменные. ESLint позволяет настраивать параметры языка для JavaScript, используемого в вашем проекте, например пользовательские глобальные переменные. Вы также можете использовать плагины, чтобы расширить ESLint и добавить поддержку параметров языка вашего проекта.
Указание параметров JavaScript
ESLint позволяет указать, какие параметры языка JavaScript вы хотите поддерживать. По умолчанию ESLint ожидает синтаксис ECMAScript на самой последней стадии 4 и режим модулей ECMAScript (ESM). Вы можете переопределить эти настройки с помощью ключа languageOptions и указать одно или несколько из следующих свойств:
-
ecmaVersion(по умолчанию:"latest") — указывает версию ECMAScript кода, проверяемого линтером, определяя синтаксис и доступные глобальные переменные. Укажите3или5для ECMAScript 3 и 5 соответственно. В противном случае можно использовать любой год начиная с2015и до настоящего времени. В большинстве случаев мы рекомендуем использовать значение по умолчанию"latest", чтобы вы всегда использовали самую последнюю версию ECMAScript. -
sourceType(по умолчанию:"module") — указывает режим используемого файла JavaScript. Возможные значения:-
module— модуль ESM (недопустимо, еслиecmaVersionимеет значение3или5). Код имеет область видимости модуля и выполняется в строгом режиме. -
commonjs— модуль CommonJS (полезно, если в коде используетсяrequire()). Код имеет область видимости функции верхнего уровня и выполняется в нестрогом режиме. -
script— не модуль. Код использует общую глобальную область видимости и выполняется в нестрогом режиме.
-
Ниже приведен пример файла конфигурации, который можно использовать при проверке кода ECMAScript 5:
// eslint.config.js
import { defineConfig } from "eslint/config";
export default defineConfig([
{
languageOptions: {
ecmaVersion: 5,
sourceType: "script",
},
},
]);
Указание параметров парсера
Если вы используете встроенный парсер ESLint, вы также можете изменить способ интерпретации кода ESLint, указав ключ languageOptions.parserOptions. По умолчанию все параметры имеют значение false:
-
allowReserved— разрешает использовать зарезервированные слова в качестве идентификаторов (еслиecmaVersionимеет значение3). -
ecmaFeatures— объект, указывающий, какие дополнительные языковые возможности вы хотите использовать:-
globalReturn— разрешает инструкцииreturnв глобальной области видимости. Этот параметр применяется только в том случае, если дляlanguageOptions.sourceTypeзадано значение"script". Если дляlanguageOptions.sourceTypeзадано значение"commonjs", инструкцииreturnверхнего уровня разрешены независимо от этого параметра. Если дляlanguageOptions.sourceTypeзадано значение"module", инструкцииreturnверхнего уровня запрещены, даже если для этого параметра задано значениеtrue. -
impliedStrict— включает глобальный строгий режим (еслиecmaVersionимеет значение5или выше). -
jsx— включает JSX.
-
Ниже приведен пример файла конфигурации, который включает разбор JSX во встроенном парсере:
// eslint.config.js
import { defineConfig } from "eslint/config";
export default defineConfig([
{
languageOptions: {
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
},
},
]);
Указание глобальных переменных
Некоторые основные правила ESLint используют сведения о глобальных переменных, доступных вашему коду во время выполнения. Поскольку они могут значительно различаться в разных средах, а также изменяться во время выполнения, ESLint не делает предположений о том, какие глобальные переменные существуют в вашей среде выполнения. Если вы хотите использовать правила, которым необходимы сведения о доступных глобальных переменных, вы можете определить глобальные переменные в файле конфигурации или с помощью комментариев конфигурации в исходном коде.
Использование комментариев конфигурации
Чтобы указать глобальные переменные с помощью комментария внутри файла JavaScript, используйте следующий формат:
/* global var1, var2 */
Это определяет две глобальные переменные: var1 и var2. Если вы хотите дополнительно указать, что в эти глобальные переменные можно записывать (а не только считывать их значения), задайте для каждой флаг "writable":
/* global var1:writable, var2:writable */
Использование файлов конфигурации
Чтобы настроить глобальные переменные в файле конфигурации, задайте свойству конфигурации languageOptions.globals объект, содержащий ключи с именами каждой глобальной переменной, которую вы хотите использовать. Для каждого ключа глобальной переменной задайте соответствующее значение: "writable", чтобы разрешить перезапись переменной, или "readonly", чтобы запретить ее перезапись. Например:
// eslint.config.js
import { defineConfig } from "eslint/config";
export default defineConfig([
{
languageOptions: {
globals: {
var1: "writable",
var2: "readonly",
},
},
},
]);
Эта конфигурация разрешает перезаписывать var1 в коде, но запрещает это для var2.
Глобальные переменные можно отключить, задав для них значение "off". Например, в среде, где доступны почти все глобальные переменные, кроме Promise, можно использовать такую конфигурацию:
// eslint.config.js
import { defineConfig } from "eslint/config";
export default defineConfig([
{
languageOptions: {
globals: {
Promise: "off",
},
},
},
]);
Предопределенные глобальные переменные
Помимо встроенных глобальных переменных стандарта ECMAScript, которые автоматически включаются в зависимости от настроенного languageOptions.ecmaVersion, ESLint не предоставляет предопределенных наборов глобальных переменных. Чтобы дополнительно включить все глобальные переменные для определенной среды, можно использовать пакет globals. Например, вот как добавить console и другие глобальные переменные браузера в конфигурацию.
// eslint.config.js
import globals from "globals";
import { defineConfig } from "eslint/config";
export default defineConfig([
{
languageOptions: {
globals: {
...globals.browser,
},
},
},
]);
Таким же образом можно включить несколько разных наборов глобальных переменных. В следующем примере используются глобальные переменные и для веб-браузеров, и для Jest:
// eslint.config.js
import globals from "globals";
import { defineConfig } from "eslint/config";
export default defineConfig([
{
languageOptions: {
globals: {
...globals.browser,
...globals.jest,
},
},
},
]);
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/use/configure/language-options