J'ai écrit un package R à des fins internes et j'ai également ajouté des vignettes. Lorsque j'utilise devtools :: install (build_vignettes = TRUE)
, toutes les vignettes sont correctement installées sur ma machine. Mais pour distribuer le paquet à des collègues, je voudrais générer un binaire Windows.
Mais lorsque j'utilise Build binary package depuis le volet RStudio Build, les vignettes n'apparaissent pas lorsque le package est installé à partir du binaire généré. J'ai pensé que je pourrais déplacer les vignettes de doc
vers inst / doc
avant de construire le paquet binaire, mais cela doit être fait manuellement chaque fois qu'une vignette change.
À partir de R CMD INSTALL --help
, je n'ai pas pu comprendre s'il existe une option pour inclure la construction des vignettes.
Y a-t-il une meilleure option disponible que de copier manuellement les fichiers de doc
à inst/doc
?
J'ai déjà essayé devtools :: build_vignettes ()
. Voici le résultat de la console:
> 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
Il indique que les fichiers sont copiés dans doc /
. Ils n'apparaissent pas dans inst/doc
.
3 Réponses :
J'ai également eu du mal avec la même question.
devtools :: build_vignettes ()
mettait les résultats dans inst / doc
(par exemple, comme recommandé dans la dernière puce ici ). devtools :: build_vignettes ()
place désormais les résultats dans doc
(le changement spécifique semble être ici ). Les raisons de ce changement sont données dans les enjeux liés à ce commit. Je ne trouve pas de moyen d'accomplir le flux de travail précédent en utilisant uniquement devtools
, j'ai donc utilisé le code suivant. Il écrasera tous les fichiers qui se trouvent déjà dans inst / doc
ou 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
Vous pouvez maintenant appeler devtools :: build ()
avec binary = TRUE
, et il inclura les vignettes construites (c'est-à-dire HTML).
@tshimkus Oui, cette solution a fonctionné pour moi, en utilisant le code ci-dessus.
Merci de partager votre approche. Cependant, cela semble assez compliqué par rapport à robocopy doc inst / doc
que je tape dans le terminal Windows de RStudio. Puisque vous n'en avez besoin que pour générer le package binaire.
Bon point. Ma réponse utilise la fonctionnalité de base R pour éviter d'avoir à copier manuellement les fichiers.
Si vous utilisez
devtools::build() devtools::build("../package_name.tar.gz", binary=TRUE)
alors les vignettes seront intégrées dans le fichier tar.gz, d'abord puis dans le binaire.
Pas besoin de déplacer de fichiers à propos de
Pourriez-vous ajouter plus de détails @der_grund? J'utilise Windows btw. Pour être plus clair, "../package_name.tar.gz" doit être modifié pour correspondre au fichier qui a été créé par devtools :: build ()
J'ai rencontré ce même problème et surpris qu'il ne soit pas mieux traité dans les matériaux de RStudio. J'ai trouvé que c'était le moyen le plus simple, au moment de la rédaction de ce commentaire
Ce qui précède peut être combiné comme tel: devtools :: build (devtools :: build (), binary = TRUE)
Juste pour référence:
Le moyen le plus robuste est de construire un paquet source (fichier .tar.gz) puis d'utiliser les outils de commande au lieu de RStudio pour construire le binaire. Si vous êtes dans le répertoire où se trouve le paquet source, vous pouvez utiliser la commande suivante sur la ligne de commande (à condition que R soit dans votre PATH):
R CMD INSTALL --build pkgname_x.y.z.tar.gz
avec pkgname_x.yztar.gz
le nom du fichier tar contenant le paquet source.
Notez que vous devez d'abord créer le paquet source et construire à partir du paquet source si vous voulez faire ajouter les vignettes correctement.
Cela marche. Juste une remarque: pour que cette commande fonctionne sous Windows, le dossier bin
de RTools doit être inclus dans la variable d'environnement PATH.
Si vous utilisez
devtools :: build_vignettes
, les vignettes vont dans le dossierinst / doc
.Cela ne fonctionne pas. S'il vous plaît voir ma modification ...
aux prises avec le même problème pour le binaire mac. serait-ce un bug?