BetaViberTest is in active development — expect breaking changes.
Overview
#003mediumArchitecture & Structure
Bloated Barrel Files
Detects barrel/index files with excessive re-exports that kill tree-shaking.
Rule ID:
bloated-barrelExamples#
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 themGoodSub-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
}
}
}