如何在二进制R包中包含HTML插图

问题描述 投票:2回答:1

我为内部目的编写了一个R包,并添加了一些小插图。当我使用devtools::install(build_vignettes = TRUE)时,所有的晕影都安装在我的机器上。但是为了将包分发给colleages,我想生成一个windows二进制文件。

但是当我使用RStudio Build窗格中的Build二进制包时,从生成的二进制文件安装包时,不会显示晕影。我想我可以在构建二进制包之前将小插图从doc移动到inst/doc,但这需要在插件改变时手动完成。

R CMD INSTALL --help我无法确定是否有包括构建小插曲的选项。

除了手动将文件从doc复制到inst/doc之外,还有更好的选择吗?


EDIT

我已经尝试过devtools::build_vignettes()。这是控制台中的输出:

> devtools::build_vignettes()
Building archivR vignettes
Moving vig1.html, vig2.html, vig1.R, vig2.R to doc/
Copying vig1.Rmd, vig2.Rmd to doc/
Building vignette index

它说文件被复制到doc/。他们没有出现在inst/doc

r build package
1个回答
2
投票

我也一直在努力解决同样的问题。

  • 以前,devtools::build_vignettes()将结果放在inst/doc中(例如,按照上一个项目点here的建议)。
  • 从版本2.0.0(2018年10月发布)开始,devtools::build_vignettes()现在将结果放在doc(具体的变化似乎是here)。在与此提交相关联的问题中给出了此更改的原因。

我只能使用devtools找不到完成以前工作流程的方法,所以我使用了以下代码。它将覆盖已存在于inst/docinst/Meta中的所有文件。

build_vignettes_to_inst <- function() {
  devtools::build_vignettes() # Builds vignettes to 'doc' and 'Meta'. Updates '.gitignore'.
  unlink(c("inst/doc", "inst/Meta"), recursive = TRUE) # Remove the directories if they exist
  dir.create("inst/doc"); dir.create("inst/Meta") # Create empty directories
  has_worked <- c( # Copy files to 'inst' subfolders
    file.copy(list.files("doc", full.names = TRUE), to = "inst/doc") 
    , file.copy(list.files("Meta", full.names = TRUE), to = "inst/Meta")
  )
  unlink(c("doc", "Meta"), recursive = TRUE) # Optional: Remove unwanted directories
  return(all(has_worked)) # Returns TRUE if everything worked OK
}

build_vignettes_to_inst() # Call the function

你现在可以用devtools::build()调用binary = TRUE,它将包含内置的(即HTML)晕影。


-1
投票

如果你使用

devtools::build()
devtools::build("../package_name.tar.gz", binary=TRUE)

然后将小插图构建到tar.gz文件中,然后再构建到二进制文件中。

无需移动任何文件

© www.soinside.com 2019 - 2024. All rights reserved.