使用 devtools 开发 htmlwidgets

developing htmlwidgets with devtools

我在 windows 10 机器上。正在尝试 html 小部件开发。

为了进行测试,我有一个 sigma 包的本地克隆,这是 htmlwidgets 教程中提供的示例。

基于 this post,我相信 devtools 可以与 html 小部件一起正常工作。但是如果我这样做

library(devtools)
load_all()
sigma(system.file("examples/ediaspora.gexf.xml", package = "sigma"))

生成的小部件是空白的。如果我检查输出的 html 代码,我发现未加载 sigma 所需的 javascript 文件。

但是如果我这样做

library(devtools)
install()
library(sigma)
sigma(system.file("examples/ediaspora.gexf.xml", package = "sigma"))

我得到了网络。检查输出的 html 表明这次加载了所需的 javascript 文件。

我是否应该安装正在开发的软件包以便能够对其进行测试?有没有办法解决这种行为?

通过阅读 post 中的解决方案,如果您使用以下两种解决方法之一(仅在此处总结),devtools 可与 htmlwidgets 一起使用:

  1. 在 htmlwidgets 包上使用 devtools::load_all(),然后 load_all() 您的小部件包。这将要求您在本地某处拥有 htmlwidgets 源。例如,将 https://github.com/ramnathv/htmlwidgets 存储库克隆到 ~/htmlwidgets,然后 运行 devtools::load_all("~/htmlwidgets").

  2. 运行 此代码用于填充 htmlwidgets system.file,然后 load_all() 您的小部件包:https://gist.github.com/wch/c942335660dc6c96322f

shim_system_file <- function(package) {
  imports <- parent.env(asNamespace(package))
  pkgload:::unlock_environment(imports)
  imports$system.file <- pkgload:::shim_system.file
}

shim_system_file("htmlwidgets")
shim_system_file("htmltools")

在这两个中,我可能会使用第二个,因为它更容易,也许将它放在 .Rprofile 中,以便在每个 R 会话开始时 运行。


我刚刚了解到还有一个更简单的解决方案。 htmlwidgets 和 htmltools 的开发版本现在内置了 system.file 垫片,因此 load_all() 可以正常工作:https://github.com/ramnathv/htmlwidgets/pull/340。您可以像这样安装两者的开发版本:

devtools::install_github("ramnathv/htmlwidgets")

然后像往常一样 load_all() 您的小部件包,无需进一步的解决方法。