使用 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 一起使用:
在 htmlwidgets 包上使用 devtools::load_all()
,然后 load_all()
您的小部件包。这将要求您在本地某处拥有 htmlwidgets 源。例如,将 https://github.com/ramnathv/htmlwidgets 存储库克隆到 ~/htmlwidgets
,然后 运行 devtools::load_all("~/htmlwidgets")
.
运行 此代码用于填充 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()
您的小部件包,无需进一步的解决方法。
我在 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 一起使用:
在 htmlwidgets 包上使用
devtools::load_all()
,然后load_all()
您的小部件包。这将要求您在本地某处拥有 htmlwidgets 源。例如,将 https://github.com/ramnathv/htmlwidgets 存储库克隆到~/htmlwidgets
,然后 运行devtools::load_all("~/htmlwidgets")
.运行 此代码用于填充 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()
您的小部件包,无需进一步的解决方法。