BetaViberTest is in active development — expect breaking changes.
Overview
DocsRulesBloated Barrel Files
#003mediumArchitecture & Structure

Bloated Barrel Files

Detects barrel/index files with excessive re-exports that kill tree-shaking.

Rule ID:bloated-barrel

Examples#

Badindex.ts — 35 re-exports killing tree-shaking
// components/index.ts — barrel file
export { Button } from './Button';
export { Input } from './Input';
export { Select } from './Select';
export { Checkbox } from './Checkbox';
export { Radio } from './Radio';
export { Modal } from './Modal';
export { Drawer } from './Drawer';
export { Toast } from './Toast';
export { Tooltip } from './Tooltip';
export { Popover } from './Popover';
// ... 25 more exports
// Importing ONE component pulls in ALL of them
GoodSub-barrels by domain
// components/forms/index.ts
export { Button } from './Button';
export { Input } from './Input';
export { Select } from './Select';
export { Checkbox } from './Checkbox';

// components/overlays/index.ts
export { Modal } from './Modal';
export { Drawer } from './Drawer';
export { Toast } from './Toast';

// components/feedback/index.ts
export { Tooltip } from './Tooltip';
export { Popover } from './Popover';

// Or: import directly
import { Button } from '@/components/forms/Button';

What It Detects#

highBarrel file with >30 re-exports
Barrel file has {N} re-exports

Fix: Organize into sub-barrels by domain. Large barrels kill tree-shaking and slow bundlers.

mediumBarrel file with 16-30 re-exports
Barrel file has {N} re-exports

Fix: Consider organizing into sub-barrels by domain.

Configuration#

This rule is enabled by default. To disable it:

.vibertestrc.jsonjson
{
  "rules": {
    "bloated-barrel": {
      "enabled": false
    }
  }
}