Spec-Zone.ru › ESLint

Настройка параметров языка

Совет

На этой странице объясняется, как настроить параметры языка с помощью формата плоской конфигурации.

Экосистема 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,
				},
			},
		},
	},
]);
Важно

Обратите внимание: поддержка синтаксиса JSX — это не то же самое, что поддержка React. React применяет к синтаксису JSX определенную семантику, которую ESLint не распознает. Если вы используете React, рекомендуем использовать eslint-plugin-react или @eslint-react/eslint-plugin.

Указание глобальных переменных

Некоторые основные правила 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",
			},
		},
	},
]);
Совет

По историческим причинам логическое значение false и строковое значение "readable" эквивалентны "readonly". Аналогично, логическое значение true и строковое значение "writeable" эквивалентны "writable". Однако использование этих устаревших значений не рекомендуется.

Предопределенные глобальные переменные

Помимо встроенных глобальных переменных стандарта 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API