我正在编写一个名为slidify
的R包,可以轻松地从R Markdown文件生成可重现的HTML5幻灯片。该软件包使用来自几个现有HTML5幻灯片生成框架的css
和js
文件,如dzslides
,deck.js
等。目前,我已经组织了这些外部资产的下载版本在inst/libraries
的{{1}}文件夹中,以便在安装时自动可供用户使用。虽然这种方法很简单,但也存在一些缺点:
这些框架会在slidify
上不断更新。在当前设置下,每次更新任何这些框架时,我都必须推送新版本的软件包。
如果我对这些框架附带的默认github
和css
进行了任何调整,那么我需要仔细合并这些更新,这样我就不会失去{{ 1}}特定的自定义。
我对如何管理这个问题有几点想法。
不要将这些库与js
打包在一起。相反,提供一个slidify
,允许用户添加他们想要的框架。
将这些框架添加到slidify
上的function
文件夹,但是inst\libraries
。现在,我不知道如果有人使用slidify
,是否会将其添加为submodules
会安装它们。
所以我的问题是,在编写R包时,如何管理不断更新的外部非R依赖项?
答案 0 :(得分:2)
一个类似的情况是查看包xlsx
和XLConnect
。
这两个包都依赖于Java库。 xlsx
定义(并依赖于)仅包含库的独立包xlsxjars
。
通过这种方式,下游代码与库分离。
答案 1 :(得分:1)
我使用git-subtree
解决了类似的问题。看看:Managing 3rd party sources and binaries used by code under source control