如果我devtools::use_vignette("my-vignette")在我的包中使用,运行devtools::build_vignette()正常.
但是,一旦我从包中添加了对任何内容的调用,它就会停止工作,并出现错误could not find function "myfunc".如果我添加一个library(mypackage)电话,我会收到错误there is no package called 'mypackage'.
(我应该注意,我的包检查,构建和安装完全干净[没有晕影],并且运行devtools::load_all()也适用于交互式会话.)
我知道如果我构建并安装我的软件包,那么我就可以获得构建的小插图.这似乎是一种非常低效和危险的发展方式; 基本上强迫我在每次提交时重新构建并重新安装整个软件包,以测试小插图没有破坏.
是否有另一种方法可以让小插图识别正在进行的包裹?
如果您使用的是RStudio IDE(这对包开发很有帮助),您可以devtools::use_vignette通过单击Knit按钮来渲染您创建的Rmd文档.它将创建插图的预览版本.顺便说一下,RStudio IDE为您提供了有用的快捷键和按钮,可以按块来执行您的Rmd文档块,以测试它是否正常工作.
如果您不使用RStudio IDE,则可以使用该函数在不构建程序包的情况下呈现文档rmarkdown::render.
但是,为了工作,您的插图需要加载您的包.所以,正如你所说,你必须打电话library(mypackage),所以你的包必须安装.
您可以在命令行中安装没有晕影的软件包devtools::install(build_vignette = FALSE).在RStudio IDE中,按钮Build & Reload用于安装你的包
Rstudio IDE的非用户的另一个解决方案是devtools::load_all(path to your package)在小插图中使用,以便在小插图环境中模拟包的安装.然后,您可以在devtools::build vignette不需要安装包之前构建您的小插图 .
我应该强调,在构建包时,vignette会自动构建.所以,当发展都完成,替换小品devtools::load_all的library,因为你的包是当你构建一个软件包构建小插曲之前加载.