javascript - Rollup + HoCs treeshaking
问题描述
我正在尝试使用typescript
and创建一个组件库rollup
。
我有一个组件,Canary
.
function Canary() {
...
}
export default React.memo(Canary)
请注意如何Canary
包装在 HoC ( React.memo
) 中。
我还有另一个组件,SomeComponent
function SomeComponent() {
...
}
export default SomeComponent
SomeComponent
如果我要使用刚刚导出的内容来构建我的库,
src/index.ts
export { default as SomeComponent } from './SomeComponent'
该库是可摇树的。但是,如果我添加包装在 HoC 中的组件,则 treeshaking 会失败。不管我如何SomeComponent
从我的库中导入,Canary
都会被拉到一起并最终进入捆绑包。
我正在使用它的一个变体来检测它是否可摇晃的东西,是否为汇总而修改。
我找到了这个,它讨论了如何提示 webpack 之类的工具。我已经使用 NextJS(内部使用的 webpack)设置了一个测试项目,并添加sideEffects: false
到我的库package.json
中无济于事 -但是,我不认为是我的代码破坏了 tree-shaking,我认为它是React.memo
HoC。它需要在可分发中标记为纯。
即手动编辑输出行
var index = React.memo(Canary);
export { index as Canary }
至
var index = /*#__PURE__*/memo(Canary);
并重新运行 treeshaking 测试通过。
问题向 Rollup 发出信号表示您想标记纯粹的东西的正确方法是什么?我是否以正确的方式进行此操作?
解决方案
推荐阅读
- css - CSS选择器以网格中的行为目标
- math - 将地心坐标系转换为与切平面对齐的坐标系?
- powershell - Ansible如何运行powershell脚本
- sql - Oracle SQL:SELECT 语句中的内联表?
- cmake - cmake(Windows 10):如何检查完整的编译器输入
- php - 更改 PHP 核心函数 strpos()?如何交换参数 $haystack 和 $needle?
- html - 用图像填充整个 Bootstrap 4 模态体
- linux - gcc 7中的C头文件在哪里?
- java - 如何在 Java Spring boot 中模拟 RestTemplate?
- cassandra - Cassandra 读取一致性 LOCAL_QUORUM