实例见 hbasereader。
开发 R package
-
In RStudio > File > New Project > New Directory > R Package, 勾选 Use packrat, 这样在写代码时如果引用了某个 package,会询问是否安装,同意后自动开始 packrat 的安装过程。
-
在 Console 中执行
packrat::set_opts(vcs.ignore.src = TRUE)
, 效果是在 .gitignore 添加一条packrat/src/
,避免源码压缩包进入 VCS; -
安装依赖:
install.packages("tidyverse") install.packages("devtools") install.packages("roxygen2") packrat::snapshot()
-
修改 DESCRIPTION 文件:包括包名、名称、描述、版本号、作者等;
-
Tools > Project Options > Build Tools, check Generate documentation with Roxygen.
-
在 R/ 下编写模块代码并添加文档和测试: 将光标放在编写的函数名上,快捷键 Ctrl-Shift-Alt-R (或 Code > Insert Roxygen Skeleton) 为函数添加文档,包括名称(第一行)、描述(第二行)、作者 (@author)、参数、返回值、 是否导出(添加
@export
)、示例(用于文档测试)等。 -
定义外部函数导入: 函数中用到的所有除 base 包的函数要在 roxygen 文档中添加声明,例如:
#' @importFrom magrittr "%>%"
; -
基于 packrat/packrat.lock 文件中的 dependencies 名称和版本更新 DESCRIPTION 文件的
Imports:
列表,要包含所有代码中使用过的pkgname
; -
更新 man 目录下的 .Rd 文件:其中
examples
部分(可以包含多条语句)将在后续的 Check 步骤中被运行,相当于单元测试; -
Console 中执行
devtools::document()
更新文档 (Rd files in man folder, NAMESPACE file, etc); -
对包执行检查和测试:
devtools::check()
,修复报出的 Warning 和 Error (点击 Build 窗体中的 Check 效果相同); -
打包:
devtools::build()
(源码包)或者devtools::build(binary = TRUE)
(二进制包, Build 窗体中的 Build Source Package 和 Build Binary Package 效果相同); -
安装包并执行函数验证:
devtools::install()
(点击 Build 窗体中的 Install and Restart 效果相同)。
至此开发流程就完成了。
打包和分发
二进制发布
-
在要安装插件的目标主机上安装 R 和 devtools 包:
install.packages('devtools')
(系统需要已安装 R 及其编译工具和其他依赖库,否则执行:apt install r-base r-base-dev build-essential libssl-dev libcurl4-openssl-dev libgit2-dev
); -
从本地文件安装插件:
install.packages('warez/hbasereader_0.1.0_R_x86_64-pc-linux-gnu.tar.gz', repos = NULL, dependencies = TRUE)
-
从 CRAN 安装此插件的依赖:
devtools::install_deps('.RPackages/hbasereader')
源代码发布
Note:
-
由于 Package 源码中要写全包名,
%>%
无法使用; -
安装包时使用代理服务器:
Sys.setenv(http_proxy="http://192.68.166.22:8848") Sys.setenv(https_proxy="http://192.68.166.22:8848")
Ref: