2012-07-03 38 views
27

我正在编写一个名为slidify的R包,它可以很容易地从R Markdown文件生成可再现的HTML5幻灯片。软件包使用的cssjs文件从几个现有的HTML5幻灯片一代框架,如dzslidesdeck.js等。目前,我已经在slidifyinst/libraries文件夹组织这些外部资产的下载版本,因此它是自动可应用户安装。虽然这种方法很简单,但有一些缺点:管理R包中的外部资产

  1. 这些框架不断更新github。在当前的设置下,每当更新这些框架时,我都必须推送新版本的软件包。

  2. 如果我做任何调整,以默认cssjs来与这些框架,然后我需要谨慎地合并更新,这样我就不会失去slidify特定的自定义。

我对如何管理这个问题有几点想法。

  1. 请勿将这些库与slidify打包。相反,提供一个允许用户添加他们想要的框架的function

  2. 将这些框架添加到slidifyinst\libraries文件夹中,但将其作为submodules。现在,我不知道如果将它们添加为submodules会让他们安装,如果有人使用devtools::install_github

所以我的问题是,写的R包我如何管理其不断更新的外部非-R的依赖是什么时候?

+3

我真的很喜欢你的问题;最后调整了措词以避免“不具建设性”的选票。 – joran

+0

感谢您的编辑。它使问题更清晰。 – Ramnath

+3

一种可能性是查看软件包'xlsx'和'XLConnect'。两者都依赖于Java库。 'xlsx'定义(并依赖于)只包含库的独立软件包'xlsxjars'。通过这种方式,下游代码从库中分离出来。 – Andrie

回答

2

一个类似的情况是看看包裹xlsxXLConnect

这两个软件包都依赖于Java库。 xlsx定义(并依赖于)仅包含库的独立包xlsxjars

以这种方式,下游代码从库中分离出来。