版本

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

"restrictedNamedExports" 選項的不正確程式碼範例

在遊樂場中開啟
/*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" 選項的正確程式碼範例

在遊樂場中開啟
/*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"] 選項的其他不正確程式碼範例

在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictedNamedExports": ["default"] }]*/

function foo() {}

export { foo as default };
在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictedNamedExports": ["default"] }]*/

export { default } from "some_module";

"restrictedNamedExports": ["default"] 選項的其他正確程式碼範例

在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictedNamedExports": ["default", "foo"] }]*/

export default function foo() {}

restrictedNamedExportsPattern

"restrictedNamedExportsPattern" 選項的不正確程式碼範例

在遊樂場中開啟
/*eslint no-restricted-exports: ["error", {
    "restrictedNamedExportsPattern": "bar$"
}]*/

export const foobar = 1;

"restrictedNamedExportsPattern" 選項的正確程式碼範例

在遊樂場中開啟
/*eslint no-restricted-exports: ["error", {
    "restrictedNamedExportsPattern": "bar$"
}]*/

export const abc = 1;

請注意,此選項不適用於 export default 或任何 default 具名匯出。如果您也想限制 default 匯出,請使用 restrictDefaultExports 選項。

restrictDefaultExports

此選項允許您限制某些 default 宣告。只有在 restrictedNamedExports 選項不包含 "default" 值時,此選項才會生效。此選項接受以下屬性

direct

"restrictDefaultExports": { "direct": true } 選項的不正確程式碼範例

在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "direct": true } }]*/

export default foo;
在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "direct": true } }]*/

export default 42;
在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "direct": true } }]*/

export default function foo() {}

named

"restrictDefaultExports": { "named": true } 選項的不正確程式碼範例

在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "named": true } }]*/

const foo = 123;

export { foo as default };

defaultFrom

"restrictDefaultExports": { "defaultFrom": true } 選項的不正確程式碼範例

在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "defaultFrom": true } }]*/

export { default } from 'foo';
在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "defaultFrom": true } }]*/

export { default as default } from 'foo';

namedFrom

"restrictDefaultExports": { "namedFrom": true } 選項的不正確程式碼範例

在遊樂場中開啟
/*eslint no-restricted-exports: ["error", { "restrictDefaultExports": { "namedFrom": true } }]*/

export { foo as default } from 'foo';

namespaceFrom

"restrictDefaultExports": { "namespaceFrom": true } 選項的不正確程式碼範例

在遊樂場中開啟
/*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 中引入的。

資源

變更語言