我正在编写一个名为slidify
的R包,它可以很容易地从R Markdown文件生成可再现的HTML5幻灯片。该软件包利用了几个现有HTML5幻灯片生成框架(例如css
,js
等)中的dzslides
和deck.js
文件。目前,我已经将这些外部 Assets 的下载版本整理到inst/libraries
的slidify
文件夹中,因此用户可以自动使用安装。尽管此方法很简单,但存在一些缺点:
github
不断更新。在当前设置下,每次更新任何这些框架时,我都必须推送该软件包的新版本。 css
和js
进行了任何调整,则需要仔细合并更新,以免丢失slidify
的特定自定义项。 我对如何处理有一些想法。
slidify
打包。而是提供一个function
,该代码将允许用户添加所需的框架。 inst\libraries
上的slidify
文件夹中,但作为submodules
。现在,我不知道如果有人使用submodules
将它们添加为devtools::install_github
会安装它们。 所以我的问题是,在编写R包时,如何管理不断更新的外部非R依赖关系?
最佳答案
一种类似的情况是查看软件包xlsx
和XLConnect
。
这两个软件包都依赖Java库。 xlsx
定义(并依赖于)仅包含库的独立软件包xlsxjars
。
这样,下游代码就与库分离了。