eslint-plugin-no-barrel-files
Version:
ESLint plugin to disallow [barrel files](https://github.com/basarat/typescript-book/blob/master/docs/tips/barrel.md).
71 lines (53 loc) • 1.5 kB
Markdown
ESLint plugin to disallow [barrel files](https://github.com/basarat/typescript-book/blob/master/docs/tips/barrel.md).
Barrel files can slow down your build/tests, can cause circular dependencies, and makes tree shaking more difficult.
- https://github.com/jestjs/jest/issues/11234
- https://github.com/vercel/next.js/issues/12557
- https://dev.to/tassiofront/barrel-files-and-why-you-should-stop-using-them-now-bc4
- https://flaming.codes/posts/barrel-files-in-javascript
- `no-barrel-files`
```js
// 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;
```
```shell
npm install eslint-plugin-no-barrel-files --save-dev
```
This plugin supports both flat config and legacy config.
```js
import noBarrelFiles from "eslint-plugin-no-barrel-files";
export default [
noBarrelFiles.flat,
];
```
```js
module.exports = {
plugins: ['no-barrel-files'],
rules: {
'no-barrel-files/no-barrel-files': 'error'
}
}
```
If you need any additional features or you find a bug, feel free to submit a pull request or submit an issue.