@rolldown/pluginutils
TypeScript icon, indicating that this package has built-in type declarations

1.0.0-beta.34 • Public • Published

@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';

// 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 Vite, Rolldown-Vite or unplugin. They can be used in Rolldown plugins only.

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 (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.

/@rolldown/pluginutils/

    Package Sidebar

    Install

    npm i @rolldown/pluginutils

    Weekly Downloads

    11,432,358

    Version

    1.0.0-beta.34

    License

    MIT

    Unpacked Size

    28.7 kB

    Total Files

    7

    Last publish

    Collaborators

    • broooooklyn
    • yyx990803
    • rolldownbot