UNPKG

decorate-vite-plugin

Version:

Decorate Vite plugin

71 lines (53 loc) 2.14 kB
# decorate-vite-plugin [![NPM](https://img.shields.io/npm/v/decorate-vite-plugin)](https://www.npmjs.com/package/decorate-vite-plugin) [![NPM](https://img.shields.io/npm/dw/decorate-vite-plugin.svg)](https://www.npmjs.com/package/decorate-vite-plugin) [![License](https://img.shields.io/github/license/lbb00/decorate-vite-plugin.svg)](https://github.com/lbb00/decorate-vite-plugin/blob/master/LICENSE) [![Bundlephobia](https://img.shields.io/bundlephobia/minzip/decorate-vite-plugin)](https://bundlephobia.com/result?p=decorate-vite-plugin) [![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat&logo=typescript&logoColor=white)](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 ```