新闻详情

新闻详情

首页 / 资讯中心 / 详情

mdBook 通用配置指南:book.toml 中的 book、rust 与 build 配置项详解

发布时间:2026/10/2 7:00:44来源:尧图网络
mdBook 通用配置指南:book.toml 中的 book、rust 与 build 配置项详解
开发工具文档【免费下载链接】mdBookCreate book from markdown files. Like Gitbook but implemented in Rust项目地址https://gitcode.com/gh_mirrors/md/mdBook点击查看免费下载mdBook 将一本书的全部构建参数集中存放在根目录的book.toml文件中本文以官方文档 General configuration 为骨架结合仓库源码逐项拆解[book]、[rust]、[build]三个核心配置表你会掌握每个键的含义、默认值、生效范围与典型用法并了解这些配置在 mdBook 源码中的实际解析与调用位置从而能够独立完成一本多语言、可定制构建流程的书籍配置。配置文件入口book.toml 从哪来、如何加载mdBook 在运行mdbook build、mdbook serve等命令时会从书籍根目录读取book.toml。配置加载的核心实现在 crates/mdbook-core/src/config.rsConfig::from_str直接调用toml::from_str解析 TOML 内容config.rsConfig::from_disk负责把磁盘上的配置文件读成字符串再交给from_strconfig.rsConfig结构体由book、build、rust、output、preprocessor五个顶层表组成config.rs其中output与preprocessor以松散 TOML 表形式保存分别交给各渲染器与预处理器自行消费。每个配置结构体都标注了#[serde(default, rename_all kebab-case, deny_unknown_fields)]如 config.rs这意味着所有键均采用 kebab-case 命名如build-dir、text-direction未在配置文件中出现的键会自动回落到结构体的Default实现不会报错而未知键则会因deny_unknown_fields直接导致解析失败避免拼写错误被静默吞掉。下面的完整示例覆盖了本文讲解的全部配置节来自文档 general.md[book] title Example book authors [John Doe] description The example book covers examples. [rust] edition 2018 [build] build-dir my-example-book create-missing false [preprocessor.index] [preprocessor.links] [output.html] additional-css [custom.css] [output.html.search] limit-results 15一个必须牢记的全局规则是配置文件中出现的任何相对路径始终以存放book.toml的书籍根目录为基准而不是以当前终端的工作目录为基准文档 general.md 明确强调。这一点对src、build-dir、extra-watch-dirs等路径型键都适用。书籍元信息[book] 配置表[book]表存放书籍的通用元数据对应源码中的 BookConfig 结构体。各键说明如下title书名类型为可选字符串OptionString默认Noneauthors作者列表VecString默认空数组在 HTML 渲染时会被写入meta nameauthor等元信息description书籍描述写入每个页面 HTMLhead中的 meta 信息默认Nonesrc源码目录默认值是src——即书籍根目录下名为src的文件夹config.rs。可通过此键改到任意目录如src my-src表示源码位于root/my-srclanguage书籍主语言默认Some(en)config.rs会用于生成html langen之类的语言属性text-direction文字方向可选值为ltr从左到右与rtl从右到左对应枚举 TextDirection。未指定时由language自动推导。示例配置来自文档 general.md[book] title Example book authors [John Doe, Jane Doe] description The example book covers examples. src my-src # 源码将位于 root/my-src 而不是 root/src language en text-direction ltrlanguage 与 text-direction 的推导规则从源码可以确认两者并非独立生效而是存在优先级关系。BookConfig::realized_text_directionconfig.rs的逻辑是显式设置了text-direction就用它否则调用TextDirection::from_lang_code根据语言代码推导config.rs。推导时内置了一张 RTL 语言清单包含ar/ara、he/heb、fa/per/fas、ur/urd、yi/yid、ku/kur等常见从右到左书写系统的语言代码清单之外的语言一律视为 LTR。仓库中的测试用例也印证了这套规则例如语言设为ar/he时推导结果为RightToLeften/ja为LeftToRight而一旦显式设置text-direction无论语言为何都以显式值为准config.rs 的test_text_direction测试。因此编写阿拉伯语、希伯来语或波斯语书籍时即使不写text-direction只要正确设置languagemdBook 也会自动为页面输出 RTL 方向若个别书籍需要阿拉伯语内容但整体 LTR 排版这类特殊场景则可用text-direction显式覆盖。Rust 语言选项[rust] 配置表[rust]表控制与 Rust 代码块、测试和 playground 相关的行为对应源码中的 RustConfig目前只有一个公开键edition代码块默认使用的 Rust edition可选值为2015、2018、2021、2024对应枚举 RustEdition。默认值是2015RustEdition的Default派生自结构体且文档明确说明默认为 2015。[rust] edition 2015 # 代码块的默认 edition单个代码块可以通过注解覆盖全局默认值例如只让某一块按 2015 版编译文档 general.mdrust,edition2015 // 这段代码仅在 2015 edition 下有效。 let try true; 对应的注解依次是edition2015、edition2018、edition2021、edition2024。仓库配置解析测试也验证了edition键与RustEdition枚举的映射关系edition 2018解析为RustEdition::E20182021对应E2021config.rs。此外rust.edition也可以借助Config::set在运行时动态覆盖测试set(rust.edition, 2024)后解析结果为RustEdition::E2024config.rs。构建选项[build] 配置表[build]表控制书籍的构建流程对应源码中的 BuildConfig共有四个键[build] build-dir book # 输出目录 create-missing true # 是否自动创建缺失页面 use-default-preprocessors true # 是否使用默认预处理器 extra-watch-dirs [] # 额外监听目录触发自动重建build-dir输出目录渲染结果输出到书籍根目录下的book/目录默认值bookconfig.rs。构建生成的index.html路径即为build_dir_for(html)与index.html拼接的结果src/cmd/build.rs。该配置可以被命令行参数--dest-dir短选项-d覆盖。从 command_prelude.rs 可以看到--dest-dir的帮助信息明确说明省略时使用build.build-dir再缺省则回落到./book而set_dest_dir函数command_prelude.rs在提供该参数时会用当前工作目录 参数路径直接覆写book.config.build.build_dir。注意此处的路径基准是当前工作目录与book.toml内相对路径以书籍根目录为基准的规则不同。create-missing缺失章节自动创建SUMMARY.md中列出的 Markdown 文件如果不存在默认true会在构建时自动创建空文件设为false后构建遇到缺失文件会直接报错退出文档 general.md。源码层面该行为发生在书籍加载阶段load_book在解析完SUMMARY.md后检查cfg.create_missing为true时调用create_missing(src_dir, summary)补齐缺失章节crates/mdbook-driver/src/load.rs。仓库测试集里也有对应的集成用例 tests/testsuite/build/create_missing/book.toml 与 tests/testsuite/build.rs验证了该开关的实际行为。use-default-preprocessors默认预处理器开关mdBook 自带links与index两个默认预处理器此键控制它们是否运行默认trueconfig.rs。判定规则在 crates/mdbook-driver/src/mdbook.rs不配置任何预处理器时默认的links与index照常运行use-default-preprocessors false会禁用这两个默认预处理器但只要你显式声明了某个预处理器表例如[preprocessor.links]无论该开关是 true 还是 false这个预处理器都会运行文档 general.md。换言之显式声明具有最高优先级。这意味着你可以在保留默认预处理器的同时追加自定义预处理器也可以关闭默认行为、完全用自己声明的预处理器替代。extra-watch-dirs扩展监听目录一个字符串列表VecPathBuf默认空在mdbook watch与mdbook serve命令下生效这些目录中的文件变化会触发重建。当书籍依赖src目录之外的内容例如外部数据文件、模板、脚本生成的中间产物时非常有用文档 general.md。相关命令的实现位于 src/cmd/watch.rs 与 src/cmd/serve.rs。完整配置实战示例综合以上内容一份面向实际项目的book.toml可以这样组织[book] title My Team Handbook authors [Alice, Bob] description Team internal documentation built with mdBook. language zh-CN # 设置语言属性 langzh-CN [rust] edition 2021 # 全书记代码块默认使用 2021 edition [build] build-dir dist # 自定义输出目录也可用 -d/--dest-dir 覆盖 create-missing true # SUMMARY.md 中缺失的章节自动创建 extra-watch-dirs [data] # data/ 下的改动也会触发 watch/serve 重建 [preprocessor.links] # 显式声明 links 预处理器即使关闭默认也会运行 [output.html] additional-css [custom.css]配置的进一步扩展本文只覆盖了通用配置三表mdBook 的配置体系还包括预处理器配置[preprocessor.xxx]各键的详细说明见 format/configuration/preprocessors.md渲染器配置[output.html]等渲染器专属键见 format/configuration/renderers.md环境变量覆盖所有配置都可以通过MDBOOK_前缀的环境变量覆盖例如MDBOOK_BOOK__TITLE对应book.title底层实现在 config.rs 的update_from_env详细规则见 format/configuration/environment-variables.md。掌握了book.toml的通用配置骨架后再配合预处理器与渲染器配置即可完整定制一本 mdBook 的构建产物。赞分享开发工具文档【免费下载链接】mdBookCreate book from markdown files. Like Gitbook but implemented in Rust项目地址https://gitcode.com/gh_mirrors/md/mdBook点击查看免费下载相关推荐mdBook 配置完全指南深入解析 book.toml 的 General / Preprocessor / Renderer / 环境变量四大配置体系mdBook 配置完全指南深入解析 book.toml 的 General / Preprocessor / Renderer / 环境变量四大配置体系 本指开发工具文档GetQzonehistory 完整指南批量备份 QQ 空间历史说说GetQzonehistory 完整指南批量备份 QQ 空间历史说说 上个月帮家里老人整理旧手机翻到一个 2011 年的 QQ 空间几条早年的说说已经显示网页爬虫数据分析Jupyter Book 使用与配置指南Jupyter Book 使用与配置指南 项目目录结构及介绍 Jupyter Book 的目录结构如下 . ├── binder │ └── environm上一篇Jan 桌面应用发版前质量清单Release Checklist全解析从迁移数据校验到回归验收的工程实践下一篇终极指南如何用Excalidraw免费虚拟白板快速创建专业图表创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

户外夜店派对舞台场景设计:灯光、结构与动线实战指南 2026/10/2 11:02:18

户外夜店派对舞台场景设计:灯光、结构与动线实战指南

1. 接到这类案子,先别急着画布景:整体定位与设计逻辑 这几年搭过的户外派对舞台,少说也有几十场,从山谷里的电子音乐节副舞台,到城市天台夜店,再到海边的日落派对,名字叫法各不相同,…

阅读更多 →
在 Cursor 中本地安装扩展的完整方法(避坑实录):从 VSIX 到 package.json 的 TaoToken 配置 2026/10/2 11:02:18

在 Cursor 中本地安装扩展的完整方法(避坑实录):从 VSIX 到 package.json 的 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
微星笔记本安装Ubuntu全指南:从BIOS到NVIDIA驱动与开发环境 2026/10/2 11:02:18

微星笔记本安装Ubuntu全指南:从BIOS到NVIDIA驱动与开发环境

1. 写在前面:为什么微星笔记本装Ubuntu总让人又爱又恨 事情得从一次真实的“翻车”说起。我把一台微星GE系列笔记本清了盘,打算从Windows 11换成Ubuntu 22.04 LTS桌面版,结果从制作启动U盘那一刻起,就踩了整整一下午的坑&#xff…

阅读更多 →
软件设计必备:详解7种内聚与7种耦合及实战判断 2026/10/2 11:02:18

软件设计必备:详解7种内聚与7种耦合及实战判断

做软件设计这些年,内聚和耦合这两个词,基本是每次评审必聊的话题。面试会问,代码评审会争,重构的时候更是绕不开。很多同学能把“高内聚、低耦合”这句话背得滚瓜烂熟,但真到了判断一段代码属于哪种内聚、哪种耦合&…

阅读更多 →
MIDL大会全解析:从论文趋势到投稿实战的医学影像深度学习指南 2026/10/2 11:02:17

MIDL大会全解析:从论文趋势到投稿实战的医学影像深度学习指南

1. MIDL是什么:一个被低估的医学影像深度学习顶会如果你关注医学影像与人工智能的交叉领域,大概率听说过CVPR、MICCAI、IPMI这些名字。但我要认真跟你聊一个在国内讨论度不算高、学术含金量却逐年攀升的会议——MIDL,全称Medical Imaging wit…

阅读更多 →
AMD显卡跑大模型:24GB显存下的低成本推理与微调方案 2026/10/2 11:02:11

AMD显卡跑大模型:24GB显存下的低成本推理与微调方案

1. 为什么选A卡:一场被预算逼出来的方案1.1 算力预算的现实账事情起因很简单,团队要跑大模型,但预算批下来那一刻,所有人都沉默了。当时对比了一圈,NVIDIA那边随便一张24GB显存的卡就是天价,放眼望去性价比…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉