Управление внешними активами в пакете R
Я пишу R-пакет под названием slidify
, который упрощает создание воспроизводимых слайдов HTML5 из файлов R Markdown. Пакет использует файлы css
и js
из нескольких существующих фреймворков слайдов HTML5, таких как dzslides
, deck.js
и т.д. В настоящее время я организовал загруженные версии этих внешних активов в папке inst/libraries
в slidify
, так что он будет автоматически доступен для пользователей при установке. Хотя этот подход прост, есть некоторые недостатки:
-
Эти рамки постоянно обновляются на github
. При текущей настройке мне придется подталкивать новую версию пакета каждый раз, когда обновляется какая-либо из этих фреймворков.
-
Если я сделаю какие-либо изменения по умолчанию css
и js
, которые поставляются с этими фреймворками, тогда мне нужно тщательно объединить обновления, чтобы я не потерял slidify
определенные настройки.
У меня было несколько мыслей о том, как управлять этим.
-
Не упаковывайте эти библиотеки с помощью slidify
. Вместо этого предоставьте function
, который позволит пользователям добавлять необходимые им рамки.
-
Добавьте эти фреймворки в папку inst\libraries
на slidify
, но как submodules
. Теперь я не знаю, добавить ли их как submodules
, чтобы они были установлены, если кто-то должен был использовать devtools::install_github
.
Итак, мой вопрос заключается в написании пакета R, как я могу управлять внешними зависимостями, отличными от R, которые постоянно обновляются?
Ответы
Ответ 1
Одна аналогичная ситуация - посмотреть пакеты xlsx
и XLConnect
.
Оба пакета зависят от библиотек Java. xlsx
определяет (и зависит от) автономный пакет xlsxjars
, который содержит только библиотеки.
Таким образом, нисходящий код отделен от библиотек.
Ответ 2
Я решил аналогичную проблему, используя git-subtree
. Посмотрите на: Управление сторонними источниками и двоичными файлами, используемыми кодом под контролем источника