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:
- https://github.com/thepassle/eslint-plugin-barrel-files
- https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-7
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";
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"
}
}