我写了一个R包供内部使用,还添加了一些小插曲。当我使用devtools::install(build_vignettes = TRUE)
时,所有小插图均已正确安装在我的计算机上。但是为了将软件包分发给其他人,我想生成一个Windows二进制文件。
但是,当我从RStudio Build窗格中使用 Build binary package 时,从生成的二进制文件安装软件包时,小插图将不会显示。我认为可以在构建二进制包之前将小插图从doc
移到inst/doc
,但这需要在晕影发生变化时手动完成。
在R CMD INSTALL --help
中,我无法确定是否有构建小插图的选项。
是否有比将文件从doc
手动复制到inst/doc
更好的选择?
我已经尝试过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
中。
答案 0 :(得分:2)
我也一直在努力解决同样的问题。
devtools::build_vignettes()
将结果放入inst/doc
中(例如,根据最后一个项目符号here的建议)。 devtools::build_vignettes()
现在将结果放入doc
(具体更改似乎是here)。与该提交相关的问题中给出了进行此更改的原因。 我找不到仅使用devtools
来完成以前的工作流程的方法,因此我使用了以下代码。它将覆盖inst/doc
或inst/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 :(得分:0)
如果您使用
devtools::build()
devtools::build("../package_name.tar.gz", binary=TRUE)
然后将小插图先构建到tar.gz文件中,然后再构建到二进制文件中。
无需移动任何文件
答案 2 :(得分:0)
仅供参考:
最可靠的方法是构建源程序包(.tar.gz文件),然后使用命令工具而不是RStudio来构建二进制文件。如果您位于可以找到源包的目录中,则可以在命令行中使用以下命令(假设PATH中包含R):
R CMD INSTALL --build pkgname_x.y.z.tar.gz
使用pkgname_x.y.z.tar.gz
包含源软件包的tar文件的名称。
请注意,如果要正确添加小插图,则应首先创建源程序包并从源程序包构建。