mdbook/crates/mdbook-core
Eric Huss d29072783f Deny all unknown config fields
This changes it so that it is an error if there is ever an unknown
configuration field. This is intended to help avoid things like typos,
or using an outdated version of mdbook. Although it is possible that new
fields could potentially safely be ignored, setting up a warning system
is a bit more of a hassle. I don't think mdbook needs to have the same
kind of multi-version support as something like cargo does. However, if
this ends up being too much of a pain point, we can try to add a warning
system instead.

There are a variety of changes here:

- The top-level config namespace is now closed so that it only accepts
  the keys defined in `Config`.
- All config tables now reject unknown fields.
- Added `Config::outputs` and `Config::preprocessors` for convenience
  to access the entire `output` and `preprocessor` tables.
- Moved the unit-tests that were setting environment variables to the
  testsuite where it launches a process instead.

Closes https://github.com/rust-lang/mdBook/issues/1595
2025-08-12 15:14:36 -07:00
..
src Deny all unknown config fields 2025-08-12 15:14:36 -07:00
Cargo.toml Remove pulldown-cmark from mdbook-core 2025-07-23 17:47:31 -07:00
README.md Add READMEs for all new crates 2025-07-23 17:47:31 -07:00

mdbook-core

Documentation crates.io Changelog

This is the base support library for mdBook. It is intended for internal use only. Other mdBook crates depend on this for any types that are shared across the crates.

This crate is maintained by the mdBook team, primarily for use by mdBook and not intended for external use (except as a transitive dependency). This crate may make major changes to its APIs or be deprecated without warning.

License

Mozilla Public License, version 2.0