2012-07-03 37 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

以這種方式,下游代碼從庫中分離出來。