Spec-Zone.ru › ESLint

no-restricted-exports

Запретить указанные имена в экспорте

В проекте определенные имена могут быть запрещены для использования в качестве экспортируемых имён по различным причинам.

Подробное описание правила

Это правило запрещает использование указанных имён в качестве экспортируемых имён.

Параметры

По умолчанию это правило не запрещает никаких имён. Запрещаются только те имена, которые вы указываете в конфигурации.

Это правило имеет параметр объекта:

  • "restrictedNamedExports" — массив строк, где каждая строка — это имя, которое нужно запретить.
  • "restrictedNamedExportsPattern" — строка, представляющая шаблон регулярного выражения. Экспортируемые имена, соответствующие этому шаблону, будут запрещены. Этот параметр не применяется к default экспортируемым именам.
  • "restrictDefaultExports" — параметр объекта с логическими свойствами для запрета определённых объявлений экспорта по умолчанию. Параметр работает только в том случае, если параметр restrictedNamedExports не содержит значение "default". Разрешены следующие свойства:
    • direct: запрещает объявления export default.
    • named: запрещает объявления export { foo as default };.
    • defaultFrom: запрещает объявления export { default } from 'foo';.
    • namedFrom: запрещает объявления export { foo as default } from 'foo';.
    • namespaceFrom: запрещает объявления export * as default from 'foo';.

Запрещённые именованные экспорты

Примеры неправильного кода для параметра "restrictedNamedExports".

Открыть в Playground
/*eslint no-restricted-exports: ["error", {
    "restrictedNamedExports": ["foo", "bar", "Baz", "a", "b", "c", "d", "e", "👍"]
}]*/

export const foo = 1;

export function bar() {}

export class Baz {}

const a = {};
export { a };

function someFunction() {}
export { someFunction as b };

export { c } from "some_module";

export { "d" } from "some_module";

export { something as e } from "some_module";

export { "👍" } from "some_module";

Примеры правильного кода для параметра "restrictedNamedExports".

Открыть в Playground
/*eslint no-restricted-exports: ["error", {
    "restrictedNamedExports": ["foo", "bar", "Baz", "a", "b", "c", "d", "e", "👍"]
}]*/

export const quux = 1;

export function myFunction() {}

export class MyClass {}

const a = {};
export { a as myObject };

function someFunction() {}
export { someFunction };

export { c as someName } from "some_module";

export { "d" as " d " } from "some_module";

export { something } from "some_module";

export { "👍" as thumbsUp } from "some_module";

Экспорты по умолчанию

По задумке, параметр "restrictedNamedExports" не запрещает объявления export default. Если вы настраиваете "default" как запрещённое имя, это ограничение будет применяться только к объявлениям экспорта с именем.

Примеры дополнительного неправильного кода для параметра "restrictedNamedExports": ["default"].

Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictedNamedExports": ["default"] }]*/

function foo() {}

export { foo as default };
Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictedNamedExports": ["default"] }]*/

export { default } from "some_module";

Примеры дополнительного правильного кода для параметра "restrictedNamedExports": ["default"].

Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictedNamedExports": ["default", "foo"] }]*/

export default function foo() {}

Шаблон для запрещённых именованных экспортов

Пример неправильного кода для параметра "restrictedNamedExportsPattern".

Открыть в Playground
/*eslint no-restricted-exports: ["error", {
    "restrictedNamedExportsPattern": "bar$"
}]*/

export const foobar = 1;

Пример правильного кода для параметра "restrictedNamedExportsPattern".

Открыть в Playground
/*eslint no-restricted-exports: ["error", {
    "restrictedNamedExportsPattern": "bar$"
}]*/

export const abc = 1;

Обратите внимание, что этот параметр не применяется к export default или любым default именованным экспортом. Если вы также хотите ограничить default экспорты, используйте параметр restrictDefaultExports.

Ограничение экспортов по умолчанию

Этот параметр позволяет вам ограничить определённые default объявления. Параметр работает только если параметр restrictedNamedExports не содержит значение "default". Этот параметр принимает следующие свойства:

прямой

Примеры неправильного кода для параметра "restrictDefaultExports": { "direct": true }.

Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "direct": true } }]*/

export default foo;
Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "direct": true } }]*/

export default 42;
Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "direct": true } }]*/

export default function foo() {}

именованный

Примеры неправильного кода для параметра "restrictDefaultExports": { "named": true }.

Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "named": true } }]*/

const foo = 123;

export { foo as default };

defaultFrom

Примеры неправильного кода для параметра "restrictDefaultExports": { "defaultFrom": true }.

Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "defaultFrom": true } }]*/

export { default } from 'foo';
Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "defaultFrom": true } }]*/

export { default as default } from 'foo';

namedFrom

Примеры неправильного кода для параметра "restrictDefaultExports": { "namedFrom": true }.

Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "namedFrom": true } }]*/

export { foo as default } from 'foo';

namespaceFrom

Примеры неправильного кода для параметра "restrictDefaultExports": { "namespaceFrom": true }.

Открыть в Playground
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "namespaceFrom": true } }]*/

export * as default from 'foo';

Известные ограничения

Это правило не проверяет содержимое исходных модулей в объявлениях повторного экспорта. В частности, если вы повторно экспортируете всё из экспорта другого модуля, этот экспорт может содержать запрещённое имя. Это правило не может обнаружить такие случаи.


//----- some_module.js -----
export function foo() {}

//----- my_module.js -----
/*eslint no-restricted-exports: ["error", { "restrictedNamedExports": ["foo"] }]*/

export * from "some_module"; // allowed, although this declaration exports "foo" from my_module

Версия

Это правило было добавлено в ESLint v7.0.0-alpha.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-restricted-exports

Spec-Zone.ru

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