@rolldown/pluginutils

中文文档
1.0.1发布于 2026/05/13MITES Module零依赖构建来源已验证近 30 天下载 7.3亿

用于Rolldown的插件实用程序

中文使用文档
文档目录11 节
  1. 安装
  2. 用法
  3. Regex助手
  4. exactRegex
  5. prefixRegex
  6. makeIdFiltersToMatchWithQuery
  7. 可组合过滤器
  8. 建筑商
  9. interpreter
  10. filterVitePlugins
  11. 许可证

@rolldown / pluginutils npm

插件实用程序 利差。

包括用于插件挂钩过滤器的regex帮助器、可组合过滤器表达式,以及用于过滤仅支持vite - service的插件的帮助器。

安装

pnpm add -D @rolldown/pluginutils

用法

import { exactRegex, prefixRegex, makeIdFiltersToMatchWithQuery } from '@rolldown/pluginutils'

所有筛选器帮助器也通过 /filter 子路径:

import { and, or, id, include } from '@rolldown/pluginutils/filter'

Regex助手

exactRegex

  • 类型: (str: string, flags?: string) => RegExp

构造一个 RegExp 匹配指定的字符串。可用作插件钩子过滤器。

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) => RegExp

构造一个 RegExp 匹配以指定前缀开头的值。

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)[]

转换id筛选器,使其也匹配包含查询字符串的id。

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) {},
  },
}

可组合过滤器

可组合过滤器表达式 对于一个简单的用例 id/include/exclude 是不够的。例如,当一个插件需要合并时 id, moduleType, code, query 条件。

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

建筑商

建设者描述
and(...exprs)所有操作数必须匹配。
or(...exprs)至少有一个操作数必须匹配。
not(expr)对操作数求反。
id(pattern, params?)匹配模块id。 pattern 是 string 或 RegExp。 params.cleanUrl 在匹配之前剥离查询/哈希。
importerId(pattern, params?)匹配进口商的身份证。形状相同 id。
moduleType(type)匹配Rolldown的模块类型('js', 'jsx', 'ts', 'tsx', 'json', 'text', 'base64', 'dataurl', 'binary', 'empty',或自定义字符串)。
code(pattern)匹配模块源。 string 匹配与 includes; RegExp 与 test。
query(key, pattern)匹配单个查询参数。 pattern 是 boolean (关键业务/真实), string (精确值),或 RegExp (价值模式)。
queries(obj)缩写 and(...) 在多个 query 条目。
include(expr)顶层包装标记 expr 作为一个包含规则。
exclude(expr)顶层包装标记 expr 作为排除规则。

interpreter

  • 类型: (exprs, code?, id?, moduleType?, importerId?) => boolean

根据给定的输入计算一个或多个顶级表达式。返回 true 当至少一个 include 是否匹配 exclude 匹配;当没有 include 存在,默认为 true 除非一个 exclude 匹配。

必须提供每个表达式所需的参数。例如,计算an id(...) 不传递的表达式 id 将抛出。

filterVitePlugins

  • 类型: <T>(plugins: T | T[] | null | undefined | false) => T[]

删除针对开发服务器的Vite插件(apply: 'serve')从一个(可能嵌套的)插件数组。插件的 apply 函数是否被调用 command: 'build' 语境决定。在Rolldown配置中重用Vite插件数组时非常有用。

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
      // ...
    },
  ]),
})

许可证

麻省理工学院

版本与发布记录

@rolldown/pluginutils 共发布 124 个版本,首次发布于 2025/05/09;过去 12 个月发布了 33 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.1latest2026/05/135 个月前
1.0.02026/05/076 个月前
1.0.0-rc.182026/04/296 个月前
1.0.0-rc.172026/04/226 个月前
1.0.0-rc.162026/04/166 个月前
1.0.0-rc.152026/04/096 个月前

其他发布通道:nightly → 1.0.0-beta.13-commit.024b632,canary → 1.0.0-beta.31-commit.832324a。

关于 @rolldown/pluginutils 的常见问题

@rolldown/pluginutils 是什么?

用于Rolldown的插件实用程序

如何安装 @rolldown/pluginutils?

在项目目录运行 npm install @rolldown/pluginutils,或使用 pnpm add / yarn add / bun add。

@rolldown/pluginutils 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/rolldown__pluginutils 是否存在。

@rolldown/pluginutils 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@rolldown/pluginutils 可以商用吗?

@rolldown/pluginutils 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@rolldown/pluginutils 的下载量有多少?

根据 npm 官方下载统计,@rolldown/pluginutils 在 2026/10/07 – 2026/11/05 这 30 天内被下载 729,816,617 次,日均约 24,327,221 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@rolldown/pluginutils 还在维护吗?

最新版本 1.0.1 发布于 2026/05/13(5 个月前);至今共发布 124 个版本,其中过去 12 个月发布了 33 个;首次发布于 2025/05/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。