
Security News
/Research
Popular node-ipc npm Package Infected with Credential Stealer
Socket detected malicious node-ipc versions with obfuscated stealer/backdoor behavior in a developing npm supply chain attack.
@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,616,704 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.

Security News
/Research
Socket detected malicious node-ipc versions with obfuscated stealer/backdoor behavior in a developing npm supply chain attack.

Security News
TeamPCP and BreachForums are promoting a Shai-Hulud supply chain attack contest with a $1,000 prize for the biggest package compromise.

Security News
Packagist urges PHP projects to update Composer after a GitHub token format change exposed some GitHub Actions tokens in CI logs.