Skip to content

art0rz/eslint-plugin-no-barrel-files

Repository files navigation

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

  • 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-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.

About

ESLint rule that disallows barrel files

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •