Как включить виньетку HTML в бинарный пакет R - PullRequest
0 голосов
/ 11 февраля 2019

Я написал пакет R для внутренних целей, а также добавил несколько виньеток.Когда я использую devtools::install(build_vignettes = TRUE), все виньетки правильно установлены на моей машине.Но чтобы распространить пакет среди коллег, я хотел бы создать бинарный файл Windows.

Но когда я использую Сборка бинарного пакета из панели RStudio Build, виньетки не будут отображаться при установке пакета из сгенерированного двоичного файла.Я подумал, что мог бы переместить виньетки с 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.

Ответы [ 2 ]

0 голосов
/ 08 августа 2019

Если вы используете

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

, тогда виньетки будут встроены в файл tar.gz, а затем в двоичный файл.

Нет необходимости перемещать какие-либо файлы около

0 голосов
/ 18 февраля 2019

Я тоже боролся с тем же вопросом.

  • Ранее devtools::build_vignettes() помещал результаты в inst/doc (например, как рекомендовано в последнем пункте маркера здесь ).
  • Начиная с версии 2.0.0 (выпущенной в октябре 2018 года), devtools::build_vignettes() теперь помещает результаты в doc (конкретное изменение выглядит как здесь ).Причины этого изменения приведены в вопросах, связанных с этим коммитом.

Я не могу найти способ выполнить предыдущий рабочий процесс, используя только 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) виньетки.

...