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

如何移除自动生成的pkgname-package.R中的重复包别名?

问题

为了给R包添加deprecated徽章,我使用了lifecycle包,调用usethis::use_package_doc()自动生成了myPkgName-package.R脚本。该脚本内容如下:

#' @keywords internal
"_PACKAGE"
## usethis namespace: start
#' @importFrom lifecycle deprecated
## usethis namespace: end
NULL

运行devtools::document()后生成的myPkgName-package.Rd文件包含以下内容:

\docType{package}
\name{myPkgName-package}
\alias{myPkgName}
\alias{myPkgName-package}

提交CRAN时,R CMD check出现警告:

Rd files with duplicated alias 'myPkgName': 'myPkgName-package.Rd' 'myPkgName.Rd'

我尝试在myPkgName-package.R中添加@aliases标签修改(分别尝试#' @aliases myPkgName-package和#' @aliases NULL),但每次运行devtools::document()后,myPkgName-package.Rd文件都没有任何变化,请问该如何解决?

解决方案

方法1:手动修改Rd文件并锁定生成规则

  • 直接打开myPkgName-package.Rd,删除重复的别名行\alias{myPkgName},保存文件。
  • 在myPkgName-package.R脚本顶部添加#' @noMd标签,告诉devtools::document()不要覆盖手动修改的Rd内容。修改后的R脚本如下:
#' @keywords internal
#' @noMd
"_PACKAGE"
## usethis namespace: start
#' @importFrom lifecycle deprecated
## usethis namespace: end
NULL
  • 再次运行devtools::document(),Rd文件的修改会被保留,不会被自动覆盖。

方法2:删除自动生成的包文档脚本,手动维护包文档

  • 删除自动生成的myPkgName-package.R脚本。
  • 手动修改已有的myPkgName.Rd文件,确保其中包含lifecycle的导入说明,且别名设置唯一,避免重复。
  • 如果NAMESPACE文件中没有自动添加相关导入,手动添加importFrom(lifecycle, deprecated)。

方法3:调整usethis配置,避免自动生成重复别名

在包的根目录下创建.usethis.yml文件,添加以下配置:

package_doc:
  add_package_alias: false

重新运行usethis::use_package_doc(),生成的包文档脚本不会自动添加myPkgName别名,从根源避免重复问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:52:17