https://github.com/bluefrog130/vite-plugin-barrels
https://github.com/bluefrog130/vite-plugin-barrels
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/bluefrog130/vite-plugin-barrels
- Owner: BlueFrog130
- License: mit
- Created: 2021-12-22T22:22:22.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-03-06T14:20:32.000Z (over 3 years ago)
- Last Synced: 2025-04-20T23:19:15.977Z (about 1 year ago)
- Language: TypeScript
- Size: 11.7 KB
- Stars: 2
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# vite-plugin-barrels
Automatically generate barrels for your folders! This plugin taps into the Vite plugin system to automatically recreate barrels on build and whenever a file gets updated or created.
|:warning: Warning|
|:----------------|
|This will remove all content existing in the `index` of the `entry` directory and all subdirectories. Only point the `entry` at a folder with no `index` files!|
## Installation
```console
npm install -D vite-plugin-barrels
```
## Usage
Add the following to your Vite configuration:
```js
// vite.config.js
import barrels from 'vite-plugin-barrels';
export default {
// ...
plugins: [
barrels({
entry: '',
extension: ''
})
]
}
```
## Example
This is an example for [Svelte](https://svelte.dev). The extension to barrel is `.svelte` with the entry being `src/lib`.
```js
// vite.config.js
import barrels from 'vite-plugin-barrels';
export default {
// ...
plugins: [
barrels({
entry: 'src/lib',
extension: '.svelte'
})
]
}
```
Before the build, the directory structure looks like this:
```bash
src
└───lib
│ Another.svelte
│ Component.svelte
│
└───layout
Container.svelte
```
After the build, the barrels get generated:
```bash
src
└───lib
│ Another.svelte
│ Component.svelte
│ index.ts
│
└───layout
Container.svelte
index.ts
```
Barrel content:
```ts
// src/lib/index.ts
// Generated by vite-plugin-barrels
export * from "./layout";
export { default as Another } from "./Another.svelte";
export { default as Test } from "./Test.svelte";
```
```ts
// src/lib/layout/index.ts
// Generated by vite-plugin-barrels
export { default as Container } from "./Container.svelte";
```
## Configuration
```ts
interface Options {
/**
* Starting directory
*/
entry: string;
/**
* File extension to search for
*/
extension: string | string[] | RegExp;
/**
* Weather or not to use typescript
* @default true When tsconfig.json is found
*/
ts?: boolean;
}
```