eslint/no-restricted-exports Nursery
What it does
This rule disallows specified names from being used as exported names.
By default, this rule doesn’t disallow any names. Only the names you specify in the configuration will be disallowed.
Why is this bad?
In a project, certain names may be disallowed from being used as exported names for various reasons.
Configuration
This rule accepts a configuration object with the following properties:
hasDefaultRestrictedNamedExport
type: boolean
restrictDefaultExports
type: object
An object with boolean properties to restrict certain default export declarations. This option works only if the restrictedNamedExports option does not contain the "default" value.
restrictDefaultExports.defaultFrom
type: boolean
default: false
Whether to restrict export { default } from declarations.
Example of incorrect code for "restrictDefaultExports": { "defaultFrom": true }:
export { default } from "foo";restrictDefaultExports.direct
type: boolean
default: false
Whether to restrict export default declarations.
Example of incorrect code for "restrictDefaultExports": { "direct": true }:
const foo = 123;
export default foo;restrictDefaultExports.named
type: boolean
default: false
Whether to restrict export { foo as default } declarations.
Example of incorrect code for "restrictDefaultExports": { "named": true }:
const foo = 123;
export { foo as default };restrictDefaultExports.namedFrom
type: boolean
default: false
Whether to restrict export { foo as default } from declarations.
Example of incorrect code for "restrictDefaultExports": { "namedFrom": true }:
export { foo as default } from "foo";restrictDefaultExports.namespaceFrom
type: boolean
default: false
Whether to restrict export * as default from declarations.
Example of incorrect code for "restrictDefaultExports": { "namespaceFrom": true }:
export * as default from "foo";restrictedNamedExports
type: string[]
default: []
An array of strings, where each string is a name to be restricted.
Example of incorrect code for "restrictedNamedExports": ["foo"]:
export const foo = 1;Example of correct code for "restrictedNamedExports": ["foo"]:
export const bar = 1;By design, this option doesn't disallow export default declarations. If you configure default as a restricted name, that restriction will apply only to named export declarations.
Example of incorrect code for "restrictedNamedExports": ["default"]:
function foo() {}
export { foo as default };
export { default } from "some_module";restrictedNamedExportsPattern
type: string
A string representing a regular expression pattern. Named exports matching this pattern will be restricted. This option does not apply to default named exports.
Example of incorrect code for `"restrictedNamedExportsPattern": "bar$":
export const foobar = 1;Example of correct code for `"restrictedNamedExportsPattern": "bar$":
export const foo = 1;How to use
To enable this rule using the config file or in the CLI, you can use:
{
"rules": {
"no-restricted-exports": "error"
}
}import { defineConfig } from "oxlint";
export default defineConfig({
rules: {
"no-restricted-exports": "error",
},
});oxlint --deny no-restricted-exportsVersion
This rule was added in v1.59.0.
