
Research
/Security News
Mini Shai-Hulud Campaign Hits Red Hat Cloud Services npm Packages
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.
@rolldown/pluginutils
Advanced tools
Plugin utilities for Rolldown.
Includes regex helpers for plugin hook filters, composable filter expressions, and a helper for filtering out Vite-serve-only plugins.
pnpm add -D @rolldown/pluginutils
import { exactRegex, prefixRegex, makeIdFiltersToMatchWithQuery } from '@rolldown/pluginutils'
All filter helpers are also exposed via the /filter subpath:
import { and, or, id, include } from '@rolldown/pluginutils/filter'
exactRegex(str: string, flags?: string) => RegExpConstructs a RegExp that matches the exact string specified. Useful as a plugin hook filter.
import { exactRegex } from '@rolldown/pluginutils'
const plugin = {
name: 'plugin',
resolveId: {
filter: { id: exactRegex('foo') },
handler(id) {}, // only called for `foo`
},
}
prefixRegex(str: string, flags?: string) => RegExpConstructs a RegExp that matches values starting with the specified prefix.
import { prefixRegex } from '@rolldown/pluginutils'
const plugin = {
name: 'plugin',
resolveId: {
filter: { id: prefixRegex('foo') },
handler(id) {}, // called for IDs starting with `foo`
},
}
makeIdFiltersToMatchWithQuery(input: string | RegExp | (string | RegExp)[]) => string | RegExp | (string | RegExp)[]Converts an id filter so that it also matches ids that include a query string.
import { makeIdFiltersToMatchWithQuery } from '@rolldown/pluginutils'
const plugin = {
name: 'plugin',
transform: {
filter: { id: makeIdFiltersToMatchWithQuery(['**/*.js', /\.ts$/]) },
// Matches:
// foo.js, foo.js?foo, foo.txt?foo.js,
// foo.ts, foo.ts?foo, foo.txt?foo.ts
handler(code, id) {},
},
}
Composable filter expressions for use cases where a simple id/include/exclude is not enough. For example, when a plugin needs to combine id, moduleType, code, and query conditions.
import { and, code, id, include, interpreter, moduleType, or } from '@rolldown/pluginutils'
const expr = include(and(or(id(/\.tsx?$/), id(/\.jsx?$/)), moduleType('tsx'), code(/import React/)))
interpreter(expr, sourceCode, sourceId, 'tsx') // boolean
| Builder | Description |
|---|---|
and(...exprs) | All operands must match. |
or(...exprs) | At least one operand must match. |
not(expr) | Negates the operand. |
id(pattern, params?) | Match the module id. pattern is string or RegExp. params.cleanUrl strips the query/hash before matching. |
importerId(pattern, params?) | Match the importer's id. Same shape as id. |
moduleType(type) | Match Rolldown's module type ('js', 'jsx', 'ts', 'tsx', 'json', 'text', 'base64', 'dataurl', 'binary', 'empty', or a custom string). |
code(pattern) | Match the module source. string matches with includes; RegExp with test. |
query(key, pattern) | Match a single query parameter. pattern is boolean (key presence/truthiness), string (exact value), or RegExp (value pattern). |
queries(obj) | Shorthand for and(...) over multiple query entries. |
include(expr) | Top-level wrapper marking expr as an inclusion rule. |
exclude(expr) | Top-level wrapper marking expr as an exclusion rule. |
interpreter(exprs, code?, id?, moduleType?, importerId?) => booleanEvaluates one or more top-level expressions against the given inputs. Returns true when at least one include matches and no exclude matches; when no include is present, defaults to true unless an exclude matches.
The argument required by each expression must be provided. For example, evaluating an id(...) expression without passing id will throw.
filterVitePlugins<T>(plugins: T | T[] | null | undefined | false) => T[]Removes Vite plugins that target the dev server (apply: 'serve') from a (possibly nested) plugin array. Plugins whose apply is a function are invoked with a command: 'build' context to decide. Useful when reusing a Vite plugin array inside a Rolldown config.
import { defineConfig } from 'rolldown'
import { filterVitePlugins } from '@rolldown/pluginutils'
import viteReact from '@vitejs/plugin-react'
export default defineConfig({
plugins: filterVitePlugins([
viteReact(),
{
name: 'dev-only',
apply: 'serve', // filtered out
// ...
},
]),
})
MIT
FAQs
Plugin utilities for Rolldown
The npm package @rolldown/pluginutils receives a total of 95,342,876 weekly downloads. As such, @rolldown/pluginutils popularity was classified as popular.
We found that @rolldown/pluginutils demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.

Research
/Security News
The North Korean malware loader hides in a Packagist-listed package and its GitHub branch to fetch and execute remote code in a likely Contagious Interview-style lure.

Security News
The Rust project is moving toward formal rules on LLM use in contributions after months of internal debate over maintainer burden, code quality, and contributor experience.