编译库
本指南帮助库作者了解如何使用 React Compiler 为用户发布经过优化的库代码。
为什么要发布编译后的代码?
作为库作者,你可以在发布到 npm 之前先编译你的库代码。这带来几个好处:
- 为所有用户带来性能提升 - 即使你的库用户还没有使用 React Compiler,他们也能获得优化后的代码
- 无需用户进行配置 - 优化开箱即用
- 行为一致 - 无论构建设置如何,所有用户都会获得相同的优化版本
设置编译
将 React Compiler 添加到你的库构建流程中:
Terminal
npm install -D babel-plugin-react-compiler@latest配置你的构建工具来编译你的库。例如,使用 Babel:
// babel.config.js
module.exports = {
plugins: [
'babel-plugin-react-compiler',
],
// ... 其他配置
};向后兼容性
如果你的库支持 React 19 以下的版本,你将需要额外的配置:
1. 安装运行时包
我们建议将 react-compiler-runtime 作为直接依赖安装:
Terminal
npm install react-compiler-runtime@latest{
"dependencies": {
"react-compiler-runtime": "^1.0.0"
},
"peerDependencies": {
"react": "^17.0.0 || ^18.0.0 || ^19.0.0"
}
}2. 配置目标版本
设置你的库所支持的最低 React 版本:
{
target: '17', // 最低支持的 React 版本
}测试策略
分别在启用和未启用编译的情况下测试你的库,以确保兼容性。将你现有的测试套件运行在编译后的代码上,同时再创建一个绕过编译器的独立测试配置。这有助于发现编译过程中可能出现的任何问题,并确保你的库在所有场景下都能正常工作。
故障排查
库在较旧的 React 版本中无法工作
如果你编译后的库在 React 17 或 18 中抛出错误:
- 确认你已经将
react-compiler-runtime作为依赖安装 - 检查你的
target配置是否与你支持的最低 React 版本一致 - 确保运行时包已包含在你发布的 bundle 中
编译与其他 Babel 插件冲突
某些 Babel 插件可能与 React Compiler 冲突:
- 将
babel-plugin-react-compiler放在你的插件列表靠前的位置 - 在其他插件中禁用有冲突的优化
- 彻底测试你的构建输出
未找到运行时模块
如果用户看到 “Cannot find module ‘react-compiler-runtime’”:
- 确保运行时包列在
dependencies中,而不是devDependencies - 检查你的 bundler 是否将运行时包含在输出中
- 验证该包是否已与你的库一起发布到 npm