我在一台Windows 10机器上。尝试尝试 htmlwidget 开发。
为了进行测试,我有一个 sigma 包的本地克隆,这是htmlwidgets
教程中提供的示例。
基于这篇文章,我被引导相信devtools可以很好地与htmlwidgets一起使用。但是,如果我这样做
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 文件。
我是否应该安装我正在开发的软件包以便能够对其进行测试?有没有办法解决这种行为?
通过阅读该帖子中的解决方案,如果您使用两种解决方法之一(仅在此处总结它们(,devtools 可以使用 htmlwidgets:
-
在 htmlwidgets 包上使用
devtools::load_all()
,然后load_all()
你的小部件包。这将要求你在本地的某个地方有htmlwidgets源代码。例如,将 https://github.com/ramnathv/htmlwidgets 存储库克隆到~/htmlwidgets
,然后运行devtools::load_all("~/htmlwidgets")
。 -
运行此代码以填充 htmlwidget 的填充
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()
您的小部件包,而无需进一步的解决方法。