@acusti/vite-plugin-react-compiler

中文文档
0.11.0发布于 2026/10/30UnlicenseTypeScriptES Module近 30 天下载 2329

通过 oxc- transform- react 运行 React 编译器的虚拟插件, 本地 Rust 端口的节点绑定, 而不是 Babel

中文使用文档
文档目录4 节
  1. 为什么会这样
  2. 使用量
  3. 选项
  4. 洞穴和生产成果

@ acusti/vite-plugin-反应-编译器

Open on npmx.dev Open on npmx.dev Open on npmx.dev Open on npmx.dev Open on npmx.dev

A 类 维特 运行的插件 React 编译器 通过 oxc- 转换- 反应, (中文(简体) ), 本地节点绑定 oxc 项目的 Rust 移植编译器 基于 Babel 的 React 编译器构建路径 .

它是从建造工具中提取的 外语,在其中运行 生产.

为什么会这样

现为本地反应编译器集成: @vitejs/plugin-react 6.1,通过 compiler: true 运行 oxc- 转换- 反应 —— 相同的 Rust 绑定这个插件使用的—— 相反 贝贝。 对于一个简单的Vite + React app, 那面旗帜是整个故事; 这个 插件没有要添加的内容 .

捕捉到的是这个 compiler: true 是一个选项 @vitejs/plugin-react 以及许多设置不会运行这个插件。 反应路由器在 框架模式是常见情况: 它运行 @react-router/dev/vite 内 地点 @vitejs/plugin-react,表示没有 compiler: true,没有 reactCompilerPreset 贝贝也倒下,因为 @vitejs/plugin-react也一样。 换入不同的 React/JSX 插件和 本地反应编译器支持也随之而来.

此插件是编译器的通过, 从 @vitejs/plugin-react 这样 它可以在其中任何一个下运行: a transform-hook 调用插件 氧化-变形-直接反应,与 enforce: 'pre' (该职位 @vitejs/plugin-react并发放JSX (单位:千美元)jsx: 'preserve'),所以无论什么插件处理 JSX/新鲜下游 继续负责 (oxc- transform- react 字条类型脚本语法) 本身,匹配 Babel 路径如何使用 @babel/ preset-typescript.)

使用量

npm install --save-dev @acusti/vite-plugin-react-compiler
# or
yarn add --dev @acusti/vite-plugin-react-compiler
# or
pnpm add --save-dev @acusti/vite-plugin-react-compiler
# or
bun add --dev @acusti/vite-plugin-react-compiler

该插件依赖于一个精确的,测试过的版本 oxc- 转换- 反应数字 : 装订在快速移动的0.x放行列车跟踪React编译器上 主和新装订的释放接近100%的bug修正( Rust 端口) 以现有的广泛使用的 Babel 插件追求对等, 因此插件 将最新的版本标注在通过repo的测试套件上 常规插件发布 。 如果您需要不同的版本, 请使用您的软件包 经理 overrides (npm, pnpm, bun) 或 (npm, pnpm, bun) resolutions 强迫它.

喜欢 @ acusti/vite-plugin-svg-反应,此插件需要 Vite \\ 8: 它 插入Vite 8的原生牛克/滚入变换管 没有它.

将插件添加到您的 Vite 配置中, 并附带您的其他 Vite 插件 :

// vite.config.ts
import { reactRouter } from '@react-router/dev/vite';
import reactCompiler from '@acusti/vite-plugin-react-compiler';
import { defineConfig } from 'vite';

export default defineConfig({
    plugins: [reactRouter(), reactCompiler()],
});

选项

插件会选择一个具有四个属性的可选选项对象:

  • include 编号 : exclude: 标准维特 createFilter 模式选择哪个模块获得编译器通过。 默认 : include: /\.[jt]sx?$/, (中文(简体) ), exclude: /[/\\]node_modules[/\\]/。 。 。 .
  • compiler: 选项逐字传递到 React 编译器,使用相同的 名称为 bail-plugin-反应编译器数字 : compilationMode, (中文(简体) ), panicThreshold (违约) 'none', (中文(简体) ), target (违约) '19', (中文(简体) ), environment 旗帜类 enableTreatRefLikeIdentifiersAsRefs,等等。 (笑声) 回调值选项 (例如:. logger,函数值 sources)不要越过本土 边界而不支持; sources 接受文件名数组 取而代之的是子弦,以及 reportDiagnostics (以下)涵盖常用 联 合 国 logger,看到编译器跳出什么.
  • memoize: 每个模块的缓存转换结果 id, 由内容键入 hash(每个文件绑入一个条目). 多环境建设(如:. React Router apps 构建客户端 + SSR 环境)运行每个变换 每个环境一次;缓存使重复通过自由. 默认为 true。 。 。 .
reactCompiler({
    exclude: [/node_modules/, /\.stories\./],
    compiler: {
        environment: { enableTreatRefLikeIdentifiersAsRefs: true },
    },
});

如果编译器报告一个致命错误( 分析失败, 拒绝选项) , 或诊断升级 panicThreshold),插件失败构建 通过 this.error(...)就像巴贝尔语法错误一样 非脂肪 编译器救市行为与对 Babel 插件的行为一样 panicThreshold: 'none': 受影响的函数未组合 继续建设.

这些救市默认是沉默的。 看编译器跳过什么 为什么,设置 compiler: { reportDiagnostics: true }: 每个可回收物 诊断(救助,或选择一种 函数出)作为警告打印在您的构建或dev服务器输出中, 和编译器的代码框架及其在文件中的位置,以及构建 继续.

reactCompiler({ compiler: { reportDiagnostics: true } });

与 memoize 上面,一个文件的诊断 报告一次每个不同的 内容,不是每个环境一次。 与 panicThreshold 设置为 'critical_errors' 或者说 'all_errors'升级的诊断失败 通过 this.error(...) 而不是警告.

如 React 编译器主机, 和不同 bail-plugin- react-compiller@ 1.0.0 互联网档案馆的存檔,存档日期2013-12-20,则 编译器还跳过其组件或钩线 useMemo 或者说 useCallback 抚养人名单缺少抚养人名单或额外抚养人名单 备忘录的更新完全如所写。 与 reportDiagnostics 每个 一个报告是“失踪的记忆依赖”或“额外基金” 记忆依赖性” panicThreshold 设置为 'critical_errors' 或者说 'all_errors'诊断失败了 编译这些 包含依赖关系的组件, 编译器推导为 Babel 插件确实如此, 关闭检查 :

reactCompiler({
    compiler: {
        environment: { validateExhaustiveMemoizationDependencies: false },
    },
});

洞穴和生产成果

反相编译器的 Rust 端口和 oxc- transform- react 绑定是 实验性并明确标注为上游。 测量和核实 在信任 Babel 插件之前, 与其对齐( __COMPILER_RUNTIME.c 输出中的备忘录缓存调用很方便 diff).

因为 Rust 端口轨道 React 编译器主干线而不是 1. 0 释放,它与 bail-plugin- react-compiller@ 1.0.0 互联网档案馆的存檔,存档日期2013-12-20 两者 方向 : 它编译一些代码 Babel 插件保存 (template-literal 对象键,在尝试/捕获中的条件),它跳过 手动记忆缺失或额外的组件和钩子 依赖, Babel 插件所汇编的(参见 选项) (中文(简体) ). 除了插件本身的测试外, 这个 Repo 运行一个上游跟踪套件 与被钉住的装订版本相对应:它夹住两种相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相分相相分相分相分相分相分相分相分相分相分相分相分相分相分相分相相分相分相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 贝贝平地在降落时固定(反应-猎物抑制选择) 自0.144.0起已停止编制,并跟踪已知的上游差距 当它们出现的时候,每条捆绑物,在它航行之前,都要重新验证 插件发布 .

在发射时测量,在生产维特的克-变形-反应0.142.0上 8 + React Router app 此插件是从中取出, 反对 bail-plugin- react-compiller@ 1.0.0 互联网档案馆的存檔,存档日期2013-12-20 覆盖987个源文件:

  • 完全记忆平和,零回归 ——每个功能 Babel 插件编译, Rust 端口编译, 它编译了一个 严格超群.
  • 编译器传出速度快了~16x 比贝贝通行证.
  • 整个生产建设速度快到2.5x (53s ~ 21s) (中文(简体) ).

版本与发布记录

@acusti/vite-plugin-react-compiler 共发布 12 个版本,首次发布于 2026/08/16;过去 12 个月发布了 12 个版本。

版本发布日期距今
0.11.0latest2026/10/308 天前
0.10.02026/10/2414 天前
0.9.02026/10/1424 天前
0.8.02026/10/071 个月前
0.7.02026/10/071 个月前
0.6.02026/09/211 个月前

其他发布通道:beta → 0.1.0。

关于 @acusti/vite-plugin-react-compiler 的常见问题

@acusti/vite-plugin-react-compiler 是什么?

通过 oxc- transform- react 运行 React 编译器的虚拟插件, 本地 Rust 端口的节点绑定, 而不是 Babel

如何安装 @acusti/vite-plugin-react-compiler?

在项目目录运行 npm install @acusti/vite-plugin-react-compiler,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vite(>=8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@acusti/vite-plugin-react-compiler 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@acusti/vite-plugin-react-compiler 支持 ESM 还是 CommonJS?

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

@acusti/vite-plugin-react-compiler 可以商用吗?

@acusti/vite-plugin-react-compiler 使用 Unlicense 许可。作者将代码贡献到公共领域,可不受限制地使用。以上为概括,不构成法律意见,请以许可原文为准。

@acusti/vite-plugin-react-compiler 的下载量有多少?

根据 npm 官方下载统计,@acusti/vite-plugin-react-compiler 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,329 次,日均约 78 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@acusti/vite-plugin-react-compiler 还在维护吗?

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