unmd is a CLI tool that extracts code fences from Markdown files and writes them to disk as files. It is especially useful when working with AI chats that generate code or entire projects in Markdown format.
- Extract Code Fences: Scans Markdown files for fenced code blocks.
- File Path Detection: Expects the first line of each code block to be a comment specifying the target file path (e.g.,
// src/index.js). - Automatic Directory Creation: Creates necessary directories if they don't already exist.
- Seamless Integration: Perfect for processing Markdown outputs from AI code generators.
- Node.js: v20.8.0 or later (see
.nvmrc) - npm: Comes with Node.js
Install unmd globally using npm:
npm install -g @brngdsn/unmdAlternatively, you can run it directly using npx:
npx @brngdsn/unmd <markdown-file>The CLI accepts a Markdown file as an argument and processes all code fences with a file path comment on the first line.
Each code fence should start with a comment that specifies the file path, followed by the code. For example:
# My Project
Here is an example of how to define a file within Markdown:
\`\`\`js
// src/index.js
console.log("Hello, world!");
\`\`\`When you run unmd on the above Markdown, it will create a file at src/index.js containing:
console.log("Hello, world!");Simply pass the Markdown file as an argument:
unmd README.mdIf no file is provided, the tool will display a usage message:
Usage: unmd <markdown-file>- Read File: The tool reads the specified Markdown file.
- Parse Markdown: It uses markdown-it to parse the Markdown content.
- Extract Code Fences: It scans for fenced code blocks.
- Detect File Path: It looks for a file path in the first line of each code block (formatted as
// path/to/file.ext). - Write Files: It writes the remaining lines of the code block to the corresponding file, creating directories as needed.
Contributions, bug reports, and feature requests are welcome! Please open an issue or submit a pull request on the GitHub repository.
This project is licensed under the MIT License. See the LICENSE file for details.
Happy coding!