Spaces:
Sleeping
Sleeping
| # @rolldown/pluginutils | |
| A utility library for building flexible, composable filter expressions that can be used in plugin hook filters of Rolldown/Vite/Rollup/Unplugin plugins. | |
| ## Installation | |
| ```sh | |
| pnpm add @rolldown/pluginutils | |
| ``` | |
| ## Usage | |
| ### Simple Filters | |
| ```ts | |
| import { exactRegex, makeIdFiltersToMatchWithQuery, prefixRegex } from '@rolldown/pluginutils'; | |
| // Match exactly 'foo.js' | |
| const filter = exactRegex('foo.js'); | |
| // Match any id starting with 'lib/' | |
| const prefix = prefixRegex('lib/'); | |
| // Match ids with query params (e.g. 'foo.js?bar') | |
| const idFilters = makeIdFiltersToMatchWithQuery(['**/*.js', /\.ts$/]); | |
| // Usage in a plugin to define a hook filter | |
| const myPlugin = { | |
| resolveId: { | |
| filter: { | |
| id: [exactRegex('MY_ID_TO_CHECK'), /some-other-regex/], | |
| }, | |
| handler(id) { | |
| // Your code here | |
| }, | |
| }, | |
| }; | |
| ``` | |
| ### Composable Filters | |
| > [!WARNING] | |
| > Composable filters are not yet supported in legacy Vite or unplugin. They can be used in Rolldown/Rolldown-Vite/Vite Beta plugins only. | |
| ```ts | |
| import { and, id, include, moduleType, query } from '@rolldown/pluginutils'; | |
| // Build a filter expression | |
| const filterExpr = and(id(/\.ts$/), moduleType('ts'), query('foo', true)); | |
| // Usage in a plugin to define a hook filter | |
| const myPlugin = { | |
| transform: { | |
| filter: [include(filterExpr)], | |
| handler(code, id, options) { | |
| // Your code here | |
| }, | |
| }, | |
| }; | |
| ``` | |
| ## API Reference | |
| ### Simple Filters | |
| - `exactRegex(str: string, flags?: string): RegExp` — Matches the exact string. | |
| - `prefixRegex(str: string, flags?: string): RegExp` — Matches values with the given prefix. | |
| - `makeIdFiltersToMatchWithQuery(input: string | RegExp | (string | RegExp)[]): string | RegExp | (string | RegExp)[]` — Adapts filters to match ids with query params. | |
| ### Composable Filters | |
| - `and(...exprs)` / `or(...exprs)` / `not(expr)` — Logical composition of filter expressions. | |
| - `id(pattern, params?)` — Filter by id. A `string` pattern is matched by exact equality (not glob); a `RegExp` is tested against the id. | |
| - `importerId(pattern, params?)` — Filter by importer id. A `string` pattern is matched by exact equality; a `RegExp` is tested against the importer id. Only usable with the `resolveId` hook. | |
| - `moduleType(type)` — Filter by module type (e.g. 'js', 'tsx', or 'json'). | |
| - `code(pattern)` — Filter by code content. | |
| - `query(key, pattern)` — Filter by query parameter. | |
| - `include(expr)` / `exclude(expr)` — Top-level include/exclude wrappers. | |
| - `queries(obj)` — Compose multiple query filters. | |
| ### Utilities | |
| - `filterVitePlugins(plugins)` — Filters out Vite plugins with `apply: 'serve'`. | |