如何配置`cargo doc`将文档输出到项目根目录的/docs文件夹以适配GitHub Pages?
如何配置
cargo doc将文档输出到项目根目录的/docs文件夹以适配GitHub Pages? 我之前也踩过这个坑!你用--target-dir确实只会替换根目录,但不会改变doc/<crate name>的嵌套结构。其实cargo doc本身就有参数能直接满足你的需求,不用手动折腾文件移动。
核心解决方案(仅生成当前 crate 文档)
直接运行这条命令:
cargo doc --no-deps --output ./docs
解释下参数:
--no-deps:只生成你自己 crate 的文档,不会包含依赖库的文档,这样./docs目录里会非常干净,没有多余的依赖文件夹。--output ./docs:告诉cargo doc把生成的所有文档直接输出到项目根目录的./docs文件夹下,而不是嵌套在doc/<crate name>里。
执行完这条命令后,你要的index.html就会直接出现在./docs目录下,完全符合GitHub Pages的要求——它会自动读取这个文件作为站点首页。
如果需要包含依赖文档的情况
要是你想把依赖的文档也一起生成并放到./docs里,那可以先正常生成文档,再把整个target/doc目录的内容复制到./docs里。这里给你两个平台的脚本:
Bash(Linux/macOS)
# 先生成完整文档,清空旧的docs目录,再复制新内容 cargo doc && rm -rf ./docs && cp -r target/doc ./docs
PowerShell(Windows)
# 同样的逻辑,适配Windows命令 cargo doc; Remove-Item -Recurse -Force ./docs; Copy-Item -Recurse target/doc ./docs
偷懒小技巧:把命令做成快捷脚本
为了不用每次都敲长命令,你可以在项目根目录创建一个脚本文件,比如build-docs.sh(Linux/macOS)或者build-docs.ps1(Windows),把上面的命令写进去,以后直接运行脚本就能一键生成符合要求的文档了。
工作区项目的额外说明
如果你的项目是Rust工作区(workspace),可以加上--workspace参数来生成所有成员的文档:
cargo doc --workspace --no-deps --output ./docs
这样所有工作区成员的文档都会直接输出到./docs里,GitHub Pages也能正常识别。
内容来源于stack exchange
相关产品推荐
相关产品推荐

