Package Exports
- eslint-plugin-no-barrel-files
- eslint-plugin-no-barrel-files/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (eslint-plugin-no-barrel-files) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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.
- 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
Rules
no-barrel-files
// 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-devESLint 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.