R CMD build vs. devtools::build() (在顶层找到的非标准文件/目录)



我正在编写一个 R 包并使用以下方法构建和测试它:

Rscript -e "devtools::document()" && R CMD build . && Rscript -e "devtools::test();devtools::check()"

我收到一张纸条:

checking top-level files
Non-standard file/directory found at top level:
‘PosteriorBootstrap_0.0.1.tar.gz’

无论devtools::check()是第一还是第二,我都会得到注意。

这 线程建议:

该注释告诉您,您通常不应该有一个名为 构建在包的顶层。

tar.gz文件是由R CMD build创建的,即使我在运行之前删除它,我也会收到相同的错误。

这 线 建议将tar.gz文件添加到.Rbuildinore,这将删除注释。

删除它的另一种方法是从 devtools 运行所有内容:

Rscript -e "devtools::document(); devtools::build(); devtools::load_all('.'); devtools::test(); devtools::check()"

然后我就不明白了。

R CMD builddevtools::build()有什么区别,为什么前者会抛出这个音符?

您正在组合许多执行类似和/或竞争功能的步骤。我建议阅读本文以获取最佳实践buildcheck工作流程。

当您运行R CMD build时,它会将包生成到当前目录,即顶级包目录。因此,当您运行检查时,它会在包根目录中看到.tar.gz文件,该文件是包中的非标准文件,因此发出警告。devtools::build()是智能的,并将包构建到包目录(无论您从何处调用它)。尝试调用混合R CMDdevtools函数的命令可能会产生问题,因为devtools也会调用R CMD命令,因此您可能会在不同的时间点重复操作或导致命令以不正确的顺序调用。

根据上面的链接,最佳实践工作流是:

Rscript -e "devtools::document();devtools::check();devtools::build()"

从包根调用,您可以完全避免处理R CMD。如果你想使用R CMD它看起来像这样:

Rscript -e "devtools::document()" && cd .. && R CMD build PosteriorBootstrap && R CMD check PosteriorBootstrap*.tar.gz

从包根目录开始,然后更改为父目录。

最新更新