Skip to content

oxc/no-barrel-file Restriction

What it does

Disallow the use of barrel files where the file contains export * statements, and the total number of modules exceed a threshold.

The default threshold is 100.

Why is this bad?

Barrel files that re-export many modules can significantly slow down applications and bundlers. When a barrel file exports a large number of modules, importing from it forces the runtime or bundler to process all the exported modules, even if only a few are actually used. This leads to slower startup times and larger bundle sizes.

References:

Example

Invalid:

javascript
export * from "foo"; // where `foo` loads a subtree of 100 modules
import * as ns from "foo"; // where `foo` loads a subtree of 100 modules

Valid:

javascript
export { foo } from "foo";

Configuration

This rule accepts a configuration object with the following properties:

threshold

type: integer

default: 100

The maximum number of modules that can be re-exported via export * before the rule is triggered.

How to use

To enable this rule in the CLI or using the config file, you can use:

bash
oxlint --deny oxc/no-barrel-file
json
{
  "rules": {
    "oxc/no-barrel-file": "error"
  }
}

References

Released under the MIT License.