我正在编写一个名为slidify的R包,它可以很容易地从R Markdown文件生成可再现的HTML5幻灯片。该软件包利用了几个现有HTML5幻灯片生成框架(例如cssjs等)中的dzslidesdeck.js文件。目前,我已经将这些外部 Assets 的下载版本整理到inst/librariesslidify文件夹中,因此用户可以自动使用安装。尽管此方法很简单,但存在一些缺点:

  • 这些框架会根据github不断更新。在当前设置下,每次更新任何这些框架时,我都必须推送该软件包的新版本。
  • 如果我对这些框架随附的默认cssjs进行了任何调整,则需要仔细合并更新,以免丢失slidify的特定自定义项。

  • 我对如何处理有一些想法。
  • 不要将这些库与slidify打包。而是提供一个function,该代码将允许用户添加所需的框架。
  • 将这些框架添加到inst\libraries上的slidify文件夹中,但作为submodules。现在,我不知道如果有人使用submodules将它们添加为devtools::install_github会安装它们。

  • 所以我的问题是,在编写R包时,如何管理不断更新的外部非R依赖关系?

    最佳答案

    一种类似的情况是查看软件包xlsxXLConnect

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

    这样,下游代码就与库分离了。

    08-26 21:55