Tool to merge multiple MkDocs sites into a single directory
Project description
MkDocs Merge
This simple tool allows you to merge the source of multiple MkDocs sites into a single one converting each of the specified sites to a sub-site of the master site.
Key Features:
- Merge multiple MkDocs sites into a single master site
- Automatic deduplication: multiple merges replace existing entries (no duplicates)
- Site unification: combine sites with the same name into single navigation sections
- File system updates: content is properly replaced when re-merging sites
Important Behavior Note (v0.11.0+)
When merging the same site multiple times, existing entries are replaced (not duplicated). This allows you to update subsites by re-running the merge command.
Changelog
Access the changelog here: https://ovasquez.github.io/mkdocs-merge/changelog/
Note: Since version 0.6 MkDocs Merge added support for MkDocs 1.0 and dropped support for earlier versions. See here for more details about the changes in MkDocs 1.0.
MkDocs-Merge officially supports Python versions 3.8, 3.9 and 3.10. It has been tested to work correctly in previous 3.X versions, but those are no longer officially supported.
Install
$ pip install mkdocs-merge
Usage
$ mkdocs-merge run MASTER_SITE SITES [-u]...
Parameters
MASTER_SITE: Path to the main MkDocs site (containsmkdocs.yml)SITES: Paths to MkDocs sites to merge (each needsmkdocs.ymlanddocs/folder)-u(optional): Unify sites with the same name into one section
Note: Re-merging the same site replaces the existing content (enables updates).
Unification Feature
The -u flag combines multiple sites with the same site_name into a single navigation section.
Without -u: Sites with the same name create duplicate navigation entries.
With -u: Sites with the same name are merged into one section.
Use Cases:
- Microservices documentation grouped under "Services"
- Multi-repository projects in the same logical section
- Team-based documentation contributions
Example
$ mkdocs-merge run root/mypath/mysite /another/path/new-site /newpath/website
A single MkDocs site will be created in root/mypath/mysite, and the sites in
/another/path/new-site and /newpath/website will be added as sub-pages.
Original root/mypath/mysite/mkdocs.yml
---
nav:
- Home: index.md
- About: about.md
Merged root/mypath/mysite/mkdocs.yml
---
nav:
- Home: index.md
- About: about.md
- new-site: new-site/home/another.md # Page merged from /another/path/new-site
- website: website/index.md # Page merged from /newpath/website
Development
Dev Install
Clone the repository and specify the dev dependencies on the install command.
Project has been updated to use pyproject.toml so the version has to be manually synchronized in both __init__.py and pyproject.toml.
Setup Virtual Environment
Before installing the package, create and activate a virtual environment in the root directory of the repo:
cd <root of the cloned repo>
python -m venv .venv
source .venv/bin/activate
Install the package for development mode
# Using quotes for zsh compatibility
$ pip install -e '.[dev]'
Test
The tests can be run using tox from the root directory. tox is part of the development dependencies:
$ tox
Publishing
Package publishing uses GitHub Actions. Documentation is published manually from main branch via Actions tab.
Project Status
Very basic implementation. The code works but doesn't allow to specify options for the merging.
Pending work
- Refactoring of large functions.
- GitHub Actions build.
- Publish pip package.
- Better error handling.
- Merge configuration via CLI options.
- Unit testing (work in progress).
- CLI integration testing.
- Consider more complex cases.
- Make MkDocs Merge module friendly: thanks to mihaipopescu
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mkdocs_merge-0.11.0.tar.gz.
File metadata
- Download URL: mkdocs_merge-0.11.0.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
912c85b8a530eae4d01202799358472bab5b18acb565f7486782a30316d2ba70
|
|
| MD5 |
ff9f3a545b4beb5de71030a3b5647442
|
|
| BLAKE2b-256 |
fe487f0ebc094bcfe316f782ec4cd051cfd53c1382c52a7f2c5a7a33b61262e5
|
File details
Details for the file mkdocs_merge-0.11.0-py2.py3-none-any.whl.
File metadata
- Download URL: mkdocs_merge-0.11.0-py2.py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b749e60ca94feba03ec94f69dcb7110a04b6d7464994caa771e0d3c35acfc02
|
|
| MD5 |
a75d48d9e643b45355e857b779303b1a
|
|
| BLAKE2b-256 |
02ea18789b6b7495c7b5e6d95cc7d90d808748574a5674007e7b91ed79319690
|