如何移除自动生成的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
相关产品推荐
相关产品推荐

