@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
pnpm add @rolldown/pluginutils
Usage
Simple Filters
import { exactRegex, makeIdFiltersToMatchWithQuery, prefixRegex } from '@rolldown/pluginutils';
const filter = exactRegex('foo.js');
const prefix = prefixRegex('lib/');
const idFilters = makeIdFiltersToMatchWithQuery(['**/*.js', /\.ts$/]);
const myPlugin = {
resolveId: {
filter: {
id: [exactRegex('MY_ID_TO_CHECK'), /some-other-regex/],
},
handler(id) {
},
},
};
Composable Filters
[!WARNING] Composable filters are not yet supported in Vite, Rolldown-Vite or unplugin. They can be used in Rolldown plugins only.
import { and, id, include, moduleType, query } from '@rolldown/pluginutils';
const filterExpr = and(id(/\.ts$/), moduleType('ts'), query('foo', true));
const myPlugin = {
transform: {
filter: [include(filterExpr)],
handler(code, id, options) {
},
},
};
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 (string or RegExp).
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.