eslint-plugin-no-barrel-files
ESLint plugin to disallow barrel files.
Why?
Barrel files can slow down your build/tests, can cause circular dependencies, and makes tree shaking more difficult.
Rules
// fail
export * from "./foo";
import Foo from "./foo";
export default Foo;
import Foo from "./foo";
export { Foo };
export { Moo } from './Moo';
export { default as Moo } from './Moo';
// pass
const Foo = 'baz';
function Bar() {}
class Baz {}
export default Foo;
export { Bar, Baz }
import { Moo } from './Moo';
export const Baz = Moo;
Usage
Install
npm install eslint-plugin-no-barrel-files --save-dev
ESLint config
This plugin supports both flat config and legacy config.
Flat config (ESLint 9+)
import noBarrelFiles from "eslint-plugin-no-barrel-files";
export default [
noBarrelFiles.flat,
];
Legacy config (ESLint <9)
module.exports = {
plugins: ['no-barrel-files'],
rules: {
'no-barrel-files/no-barrel-files': 'error'
}
}
Contributing
If you need any additional features or you find a bug, feel free to submit a pull request or submit an issue.