
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
Package released on npm: https://www.npmjs.com/package/zenmd
The simplest way to transform a directory of .md files into a static site.
posts/ directoryJust one command to build and another to deploy:
npx zenmd <inputFolder> --output <outputFolder or default: ./dist>
# Or if you prefer to install to a global command:
npm install zenmd -g
zenmd ...
netlify deployzenmd preview ./docs # also support other args as main command like --layout
The preview server rebuilds on file changes and serves clean URLs without the
.html extension.
.md files.npx command.GFM markdown, with all the features supported by remark-gfm.
Support images in markdown files.
![[image-path.png]] with smart path resolution: searches current directory first, then recursively through subdirectories.{#id .class key=value} syntax
{#main-hero .bleed .rounded width=1200 height=600}
{.center width=150 height=150}
This allows you to add:
{#hero-image} → <img id="hero-image">{.bleed .rounded} → <img class="bleed rounded">{width=320 height=240} → <img width="320" height="240">{data-loading="lazy"} → <img data-loading="lazy"><img> tagsBuilt-in image lightbox: click any image to open it in an overlay.
Wiki links: [[Another Page]] => [Another Page](/another-page.html) by default. Use --clean-link (-c) to skip the .html suffix.
Auto header anchor links, so you can navigate to any H2-h5 headers directly.
Table of contents generation when a ## Table of contents or ## Contents section is present. Renders a side TOC when the viewport has enough horizontal space.
Support raw html in markdown
--layout to select a built-in theme (currently default, matrix or cyberpunk) when no custom layout.html is provided.
zenmd eject --layout <default|matrix|cyberpunk>. This will create a layout.html in current directory.zenmd preview <inputFolder>--tags=publish:true which will only build files with publish flag or --tags=draft:false which will not build files with draft flag.site.yaml lets you define global front matter defaults (e.g. title,
description, favicon) that individual pages can override.sitemap.json at the output directory with a navigable tree (title, dates, tags, order).
nav_order, navOrder, nav-order, or order front matter (lower comes first).sitemap.xml when a base URL is available.
baseUrl option or BASE_URL env var, since sitemap.xml requires full URL.sitemap.xml will be generated.sitemap.json.
site_navigation: true in front matter or site.yaml.robots.txtfavicon.* to the
output (with a built-in fallback when none is provided).Global defaults with site.yaml: Place an optional site.yaml beside
your Markdown files. Keys under front_matter behave like page-level front
matter and are merged into every document (page front matter still wins). Run
zenmd eject to scaffold both a layout and an example site.yaml.
Favicon resolution order:
favicon value (merged from site.yaml or the Markdown
file).favicon.* in the input folder root.favicon.* inside input/assets/.favicon.png).When a baseUrl is supplied, ZenMD prefixes the resolved favicon path so
templates can reference it with {{favicon}}.
OG image resolution order:
ogImage value (from the Markdown file).front_matter.ogImage from site.yaml.og_image.png).Image handling:
https://example.com/image.png) are used as-is without copying.baseUrl is provided, relative paths are prefixed with the base URL in the og:image meta tag.baseUrl, relative paths are rendered as-is (e.g., ./image.png).OG URL (og:url) generation:
baseUrl is provided, ZenMD generates the full canonical URL for each page.baseUrl + output path without the .html extension.index.html pages, a trailing slash is used instead.baseUrl is not provided, the og:url meta tag is omitted.Built-in templates: All built-in layouts (default, matrix, cyberpunk) include OpenGraph meta tags for og:title, og:description, og:image, and og:url.
Here is a list of known gaps:
Feel free to create an issue or submit a PR on Github if you notice more deal breakers...
Made by randomor, who also made ZenJournal
npm publish --access publicZenMD is open-source software licensed under the MIT license.
FAQs
The simplest way to transform a directory of .md files into a static site.
We found that zenmd demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.