2012-07-03 19 views
27

Estoy escribiendo un paquete R llamado slidify que hace que sea fácil generar diapositivas HTML5 reproducibles a partir de archivos R Markdown. El paquete hace uso de los archivos css y js de varios marcos de generación de diapositivas existentes HTML5 como dzslides, deck.js etc. Actualmente, he organizado las versiones descargadas de estos activos externos en la carpeta inst/libraries de slidify, de modo que esté automáticamente disponible para los usuarios en instalación. Si bien este enfoque es simple, hay algunas desventajas:Administración de activos externos en el paquete R

  1. Estos marcos se actualizan constantemente en github. Bajo la configuración actual, tendría que presionar una nueva versión del paquete cada vez que se actualice cualquiera de estos marcos.

  2. Si hago ningún ajuste a los valores predeterminados css y js que vienen con estos marcos, entonces necesidad de fusionar los cambios con cuidado para que no pierda slidify personalizaciones específicas.

Tenía un par de ideas sobre cómo gestionar esto.

  1. No empaque estas bibliotecas con slidify. En su lugar, proporcione un function que permita a los usuarios agregar los marcos que deseen.

  2. Agregue estos marcos a la carpeta inst\libraries en slidify, pero como submodules. Ahora, no tengo idea de si agregarlos como submodules los instalaría si alguien usara devtools::install_github.

Así que mi pregunta es, al escribir un paquete de R cómo puedo gestionar dependencias no-R externos que se actualizan constantemente?

+3

Me gusta mucho su pregunta; modificó el fraseo al final para evitar votos "no constructivos". – joran

+0

Gracias por la edición. Hace la pregunta más limpia. – Ramnath

+3

Una posibilidad es mirar los paquetes 'xlsx' y' XLConnect'. Ambos dependen de las bibliotecas de Java. 'xlsx' define (y depende de) un paquete independiente' xlsxjars' que solo contiene las bibliotecas. De esta forma, el código descendente se desacopla de las bibliotecas. – Andrie

Respuesta

2

Una situación análoga es mirar los paquetes xlsx y XLConnect.

Ambos paquetes dependen de las bibliotecas de Java. xlsx define (y depende de) un paquete independiente xlsxjars que solo contiene las bibliotecas.

De esta forma, el código descendente se desacopla de las bibliotecas.

Cuestiones relacionadas