我正在开始使用 Rollup 和 D3 版本 4,它是用 ES2015 模块编写的。我使用传统的 D3 命名空间“d3”编写了一些代码。现在我想使用 Rollup 创建自定义捆绑包。我想使用 tree-shaking,因为我可能只使用 d3 中大约一半的函数,并且我想让事情尽可能简单。
我很清楚我可以有选择地导入函数,例如:
import {scaleLinear} from "d3-scale";
import {
event,
select,
selectAll
} from "d3-selection";
这很快就会变得非常冗长,因为 d3 的一半是很多函数。我可以忍受这一点。更大的问题是,它还需要在没有命名空间的情况下完全重写我的所有函数标识符。我不太关心这一点,因为我更喜欢命名空间库代码。
我知道我可以导入所有模块:
import * as d3 from "d3";
它保留了 d3 对象命名空间,这对我的代码组织很有好处。但是 Rollup 无法将未使用的函数从捆绑包中摇出。
我的梦想是这样的:
import {
event,
select,
selectAll
} as d3 from "d3-selection";
但规范中似乎不存在这种功能/语法。如何有选择地定位模块的各个部分,并在导入期间保留命名空间?
您需要一个重新导出模块:
export {
event,
select,
selectAll
} from "d3-selection";
import * as d3 from './d3';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)