Options
pluginBarrel takes no arguments. You configure it through output.barrel, either on defineConfig to set the root barrel and the default every plugin inherits, or on a single plugin to override that plugin's barrel.
| Option | Type | Default | Description |
|---|---|---|---|
output.barrel | { type: 'all' | 'named' } | false | false | Re-export style for the barrel files |
type | 'all' | 'named' | Required | Named exports or a wildcard export |
nested | boolean | false | Write an index.ts in every subdirectory |
output.barrel
Toggle the export style and depth to see the generated barrels.
- src/gen/
- models/
- Pet.ts
- User.ts
- clients/
- pet/
- getPetById.ts
- store/
- getInventory.ts
Controls how the generated index.ts (barrel) re-exports the output. Accepts { type: 'named' } or { type: 'all' }, optionally with nested: true (for example { type: 'named', nested: true }) to write an index.ts in every subdirectory, or false to skip the barrel entirely. Each generator plugin defaults output.barrel to { type: 'named' }; the root output.barrel on defineConfig defaults to false.
The type field picks the export style. A plugin's output.barrel also accepts nested, so the plugin writes an index.ts in every subdirectory. The root output.barrel has no nested field and always stays flat.
output.barrel defaults to false, so no barrel is generated until you set it. Set barrel: { type: 'named' | 'all' } on defineConfig to enable barrels everywhere: a root barrel, and the default every plugin without its own output.barrel inherits. A plugin that sets its own output.barrel overrides that inherited value, including back to false, which also drops its files from the root barrel.
| Type: | { type: 'all' | 'named', nested?: boolean } | false |
|---|---|
| Default: | false |
type
Export style for the barrel files. Required whenever output.barrel is set to an object.
'named're-exports each symbol by name from the file's named exports. Best for tree-shaking and explicit imports.'all'usesexport *, a smaller barrel that re-exports everything.
| Type: | 'all' | 'named' |
|---|---|
| Default: | Required, no default |
// src/gen/index.ts
export { getUser, User } from './api/user'
export { getPost, Post } from './api/post'
export { User } from './api/types/User'// src/gen/index.ts
export * from './api/user'
export * from './api/post'
export * from './api/types/User'nested
Changes what each barrel references. A barrel is written for every directory either way. With nested: false, the plugin's top barrel reaches through to the leaf files. With nested: true, each barrel re-exports only what sits directly inside its directory, including the subdirectory barrels below it, so callers can import from any depth. This field works on a plugin's output.barrel only.
| Type: | boolean |
|---|---|
| Default: | false |
// src/gen/api/index.ts
export * from './user'
export * from './post'
export * from './types/User'
// src/gen/api/types/index.ts
export * from './User'// src/gen/api/index.ts re-exports its files and subdirectories
export * from './user'
export * from './post'
export * from './types'
// src/gen/api/types/index.ts re-exports its files
export * from './User'