【问题标题】:Managing External Assets in R Package管理 R 包中的外部资产
【发布时间】:2012-07-03 15:33:37
【问题描述】:

我正在编写一个名为 slidify 的 R 包,它可以轻松地从 R Markdown 文件生成可重现的 HTML5 幻灯片。该软件包使用了来自多个现有 HTML5 幻灯片生成框架(如 dzslidesdeck.js 等)的 cssjs 文件。目前,我已将这些外部资源的下载版本组织在 @ 的 inst/libraries 文件夹中987654327@,以便在安装时自动供用户使用。虽然这种方法很简单,但也有一些缺点:

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

  2. 如果我对这些框架附带的默认 cssjs 进行任何调整,那么我需要仔细合并更新,以免丢失 slidify 特定的自定义设置。

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

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

  2. 将这些框架添加到slidify 上的inst\libraries 文件夹,但名称为submodules。现在,我不知道如果有人使用devtools::install_github,将它们添加为submodules 是否会安装它们。

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

【问题讨论】:

  • 我真的很喜欢你的问题;调整了最后的措辞以避开“不具建设性”的投票。
  • 感谢您的编辑。它使问题更清晰。
  • 一种可能性是查看包xlsxXLConnect。两者都依赖于 Java 库。 xlsx 定义(并依赖于)一个仅包含库的独立包 xlsxjars。这样,下游代码就与库解耦了。
  • 谢谢安德烈!我会调查的。
  • 冻结依赖的版本和包的版本似乎是最安全的方法。如果其中一个包发生重大变化,那么您的包仍然可以工作,而不必急于修复损坏的依赖项。最好不要覆盖依赖文件,而是重载并在原始文件之后加载,这使得事情更易于管理。

标签: git r


【解决方案1】:

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

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

这样,下游代码就与库解耦了。

【讨论】:

    【解决方案2】:

    我使用git-subtree 解决了类似的问题。看看:Managing 3rd party sources and binaries used by code under source control

    【讨论】:

      猜你喜欢
      • 2011-11-12
      • 2021-08-20
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      相关资源
      最近更新 更多