ASPEER::MakeMaker::Markdown::Publish
Add MakeMaker targets for publishing Perl distribution documentation through MkDocs, VitePress, Docusaurus, or Astro Starlight.
The module is deliberately a thin adapter. It reads
META_MERGE.x_documentation.publish from the live WriteMakefile arguments,
encodes that configuration into the generated Makefile, and delegates every
target to Markdown::Publish.
It also loads ASPEER::MakeMaker::Markdown::Pod, so one import supplies the
doc and readme maintenance targets as well as the publication targets.
use ExtUtils::MakeMaker;
use ASPEER::MakeMaker::Markdown::Publish;
WriteMakefile(
NAME => 'Example',
VERSION_FROM => 'lib/Example.pm',
META_MERGE => {
'meta-spec' => {version => 2},
x_documentation => {
publish => {
sources => ['doc'],
name => 'Example documentation',
},
},
},
);
After regenerating the Makefile:
make doc
make publish_build
make publish_serve
# Update the local publication branch:
make publish_gh
# Update it and push that branch to origin:
make publish_gh-push
# Explicit Cloudflare Workers Static Assets deployment:
make publish_cloudflare
The same combined target set can be enabled without editing Makefile.PL:
perl -MASPEER::MakeMaker::Markdown::Publish Makefile.PL
MkDocs supplies all five targets when module is omitted. Set
MARKDOWN_PUBLISH_MODULE to override the configured module at runtime.
For generated engine configuration, the site name defaults to the
WriteMakefile NAME; set x_documentation.publish.name for a friendlier
title. An authored engine configuration keeps control of its own title.
publish_gh builds and updates the local publication branch without contacting
a remote. If x_documentation.publish.base is omitted, it derives
/<repository>/ from origin, or / for an <owner>.github.io repository.
Set it explicitly when the published URL uses another path. Generated
VitePress, Docusaurus, and Starlight configuration receives this base; an
authored engine configuration remains authoritative. Push the branch through
the repository's normal Git workflow, or use publish_gh-push to update it
and push only that branch to origin without forcing it.
Set x_documentation.publish.config_extend to customise generated engine
configuration without replacing it; it cannot be combined with config.
publish_cloudflare builds and deploys the same site to the Worker named in
an authored Wrangler config supplied as cloudflare => {config => 'wrangler.jsonc'}
in x_documentation.publish. It neither commits nor pushes Git.
See the module documentation and examples.