You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

devtools::build_vignettes不生效keep_md?配置是否正确?

R包Vignette保留.md文件问题解答

问题

我正在为R包编译vignette,希望保留.md格式输出,已设置keep_md: TRUE,但运行devtools::build_vignettes()后未生成.md文件。请问我的keep_md参数配置是否正确?

最小可复现的vignette代码

---
title: "mwe"
output:
    rmarkdown::html_vignette:
        keep_md: TRUE
vignette: >
  %\VignetteIndexEntry{mwe}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(foo)

print("This is my vignette. I want to keep the .md file.")
### 生成的文件结构

.
├── .Rbuildignore
├── .gitignore
├── DESCRIPTION
├── Meta
│ └── vignette.rds
├── NAMESPACE
├── R
├── doc
│ ├── mwe.R
│ ├── mwe.Rmd
│ └── mwe.html
└── vignettes
├── .gitignore
└── mwe.Rmd

## 回答
你的`keep_md`参数配置本身是正确的,但`devtools::build_vignettes()`默认会清理编译过程中的中间文件,这才导致.md文件没有被保留。解决方法如下:

- **调整`build_vignettes()`的调用参数**
  运行函数时添加`clean = FALSE`参数,具体命令:
  ```r
  devtools::build_vignettes(clean = FALSE)

执行后,编译产生的.md文件会被保留在doc/目录下,与mwe.html等文件共存。

  • 额外说明
    如果直接用rmarkdown::render()编译单个vignette,当前的keep_md: TRUE配置可以正常生成.md文件。但devtools的打包流程默认会移除这类中间产物,必须通过clean = FALSE参数禁用自动清理。

内容的提问来源于stack exchange,提问作者DyedPurple

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:55:32