decorate-vite-plugin
Version:
Decorate Vite plugin
71 lines (53 loc) • 2.14 kB
Markdown
# decorate-vite-plugin
[](https://www.npmjs.com/package/decorate-vite-plugin)
[](https://www.npmjs.com/package/decorate-vite-plugin)
[](https://github.com/lbb00/decorate-vite-plugin/blob/master/LICENSE)
[](https://bundlephobia.com/result?p=decorate-vite-plugin)
[](https://github.com/lbb00/decorate-vite-plugin)
A utility library for decorating Vite plugins by enhancing their hook functions.
## Installation
```bash
npm install decorate-vite-plugin --save-dev
```
## Usage
This library allows you to decorate Vite plugins by adding additional functionality to their hook functions without modifying the original plugin code.
Support `vite >= v3`.
### Basic Example
```typescript
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { decorateVitePluginOption } from 'decorate-vite-plugin'
export default defineConfig({
plugins: [
decorateVitePluginOption(
vue(),
'transform',
(originalTransform, plugin) => {
return function (code, id) {
console.log(`Transforming ${id}`)
return originalTransform?.call(plugin, code, id)
}
},
),
],
})
```
## API
### `decoratePlugin`
Decorates a specific hook of a single Vite plugin.
```typescript
function decoratePlugin<T extends keyof Plugin>(
plugin: Plugin,
hookName: T,
decorator: (original: Plugin[T], plugin: Plugin) => Plugin[T],
): Plugin
```
### `decorateVitePluginOption`
Decorates a hook across any valid Vite plugin option (single plugin, array of plugins, function, promise, etc.).
```typescript
function decorateVitePluginOption<T extends keyof Plugin>(
pluginOption: PluginOption,
hookName: T,
decorator: (original: Plugin[T], plugin: Plugin) => Plugin[T],
): PluginOption
```