R CMD build与devtools::build()(在顶层找到非标准文件/目录)
我正在编写一个R包,并使用以下工具进行构建和测试:R CMD build与devtools::build()(在顶层找到非标准文件/目录),r,devtools,R,Devtools,我正在编写一个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: ‘PosteriorBoots
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 build
和devtools::build()
之间有什么区别?为什么前者会引起这样的注意?您正在组合许多执行类似和/或竞争功能的步骤。我建议阅读《最佳实践构建
和检查
工作流》
当您运行R CMD build
时,它会将包构建到当前目录,即顶级包目录。因此,当您运行检查时,它会在包根目录中看到.tar.gz文件,这是包中的非标准文件,因此会发出警告devtools::build()
是智能的,它将包构建到包父目录中(无论从何处调用)。尝试调用与devtools
函数混合使用的R CMD
命令可能会产生问题,因为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
从包根目录开始,然后更改为父目录