gpt4 book ai didi

javascript - 如何使用rollupjs删除d3选择中的循环依赖?

转载 作者:行者123 更新时间:2023-12-04 17:29:35 25 4
gpt4 key购买 nike

实际上我正在尝试使用 Rollupjs 捆绑我的 d3 项目,但是当我使用 ./node_modules/.bin/rollup -c
在终端出现错误,即


src/scripts/index.js → sample/bundle.js...
(!) Circular dependencies
node_modules\d3-selection\src\selection\index.js -> node_modules\d3-selection\src\selection\select.js -> node_modules\d3-selection\src\selection\index.js
node_modules\d3-selection\src\selection\index.js -> node_modules\d3-selection\src\selection\selectAll.js -> node_modules\d3-selection\src\selection\index.js
node_modules\d3-selection\src\selection\index.js -> node_modules\d3-selection\src\selection\filter.js -> node_modules\d3-selection\src\selection\index.js
...and 16 more
created sample/bundle.js in 2.4s

我的 rollup.config.js 文件包含
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";

export default {
input: "src/scripts/index.js",
output: {
file: "sample/bundle.js",
format: "cjs"
},
plugins: [
resolve({
browser: true
}),
commonjs()
]
};

谁能帮我解决这个问题?

最佳答案

一些循环依赖被烘焙到 d3 库的 Node 模块中,没有计划改变它,如 Mike Bostock's, creator of d3, explains in response to the issue raised on the d3 GitHub .
Node does allow cyclic ES Module dependencies ,正如迈克所说。它通过部分加载导入模块的未完成副本来防止无限循环,使引用加载异步。这使它在构建时具有足够的有向无环顺序,即使具有这些相互依赖关系。
循环 deps 通常不被视为最佳实践,应尽可能避免在您自己的代码中使用。这些警告主要是为了防止您在自己的代码中引入不必要的新循环。相比之下,这个循环是您刚刚使用高质量外部库导入的循环。
它的构建速度可能会稍微慢一些,但如果它构建,它就会构建。这就是1的人的态度谁禁止警告(在 1 中提供的步骤)。因此,如果它没有真正给您带来任何问题,那么这是一个选择。
我在 Microbundle 上收到了同样的警告,它在底层使用了 Rollup。下一个版本的 Rollup 可能会处理这个问题(如果还没有的话),所以升级 Rollup 或任何正在使用它的软件可能会解决这个警告。

关于javascript - 如何使用rollupjs删除d3选择中的循环依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60973810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com