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 i eslint-plugin-no-barrel-files --devESLint config
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.