Logo of mdbox

mdbox

简单的 Markdown 工具

简洁的 Markdown 工具!

此项目正在开发中。

💡 为什么?

Markdown 旨在尽可能易读易写。可读性是重中之重。Markdown 格式的文档应该能够按原样以纯文本发布 ^1。任何字符序列都是有效的 Markdown 文档 ^2

虽然 Markdown 设计得很简单,但我经常发现自己处于这样的情况:没有工具可以让我以编程方式处理 Markdown 语法,而无需处理复杂且严格的 AST 对象,也无需在数十种可用工具和扩展之间进行选择。通常,甚至不值得围绕 Markdown 展开研究。

我们的想法是制作足够好的工具,以编程方式读写 Markdown,就像 Markdown 本身一样简单,而无需处理 AST。

用法

安装包

# npm
npm install mdbox

# yarn
yarn add mdbox

# pnpm
pnpm install mdbox

# bun
bun install mdbox

导入

// ESM
import { md } from "mdbox";

// CommonJS
const { md } = require("mdbox");

渲染工具

blockquote(text)

渲染 Markdown 引用文本,在段落前带有 > 符号。

示例

md.blockquote("Hello, World!");
// => "> Hello, World!"

bold(text)

渲染 Markdown 粗体文本。

示例

md.bold("Hello, World!");
// => "**Hello, World!**"

boldAndItalic(text)

渲染 Markdown 粗体和斜体文本。

示例

md.boldAndItalic("Hello, World!");
// => "***Hello, World!***"

codeBlock(code, lang?, opts?: { ext? })

将字符串格式化为代码块。

示例

md.codeBlock('console.log("Hello, World!");', "js");
// => "```js\nconsole.log("Hello, World!");\n```"

heading(text, level)

渲染 Markdown 标题。

示例

md.heading("Hello, World!", 1);
// => "\n# Hello, World!\n"

hr(length)

渲染 Markdown 水平线。

示例

md.hr();
// => "---"

image(url, text?, opts?: { title? })

渲染 Markdown 图片。

示例

md.image("https://cataas.com/cat", "Cute Cat");
// => "![Cute Cat](https://cataas.com/cat)"

italic(text)

渲染 Markdown 斜体文本。

示例

md.italic("Hello, World!");
// => "_Hello, World!_"

link(url, text?, opts?: { title?, external? })

渲染 Markdown 链接。

示例

md.link("https://www.google.com", "Google");
// => "[Google](https://www.google.com)"
md.link("https://www.google.com", "Google", { external: true });
// => "<a href="https://www.google.com" title="Google" target="_blank">Google</a>"

list(items, opts: { ordered?, char? })

渲染 Markdown 有序或无序列表。

示例

md.list(["Item 1", "Item 2", "Item 3"]);
// => "- Item 1\n- Item 2\n- Item 3"
md.list(["Item 1", "Item 2", "Item 3"], { ordered: true });
// => "1. Item 1\n2. Item 2\n3. Item 3"

strikethrough(text)

渲染 Markdown 删除线文本。

示例

md.strikethrough("Hello, World!");
// => "~~Hello, World!~~"

table(table: { rows[][], columns[] })

渲染 Markdown 表格。

示例

md.table({
 columns: ["Breed", "Origin", "Size", "Temperament"],
 rows: [
   ["Abyssinian", "Egypt", "Medium", "Active"],
   ["Aegean", "Greece", "Medium", "Active"],
   ["American Bobtail", "United States", "Medium", "Active"],
   ["Applehead Siamese", "Thailand", "Medium", "Active"],
  ],
});

解析工具

initMarkdownItParser(options)

使用 markdown-it 创建解析器。警告:返回的树结构不稳定。

示例

import { initMarkdownItParser } from "mdbox/parser";
const parser = await initMarkdownItParser();
const { tree } = parser.parse("# Hello, *world*!");

initMd4wParser(opts)

使用 md4w 创建解析器。警告:返回的树结构不稳定。

示例

import { initMd4wParser } from "mdbox/parser";
const parser = await initMd4wParser();
const { tree } = parser.parse("# Hello, *world*!");

initMdAstParser(opts)

使用 mdast-util-from-markdown 创建解析器。警告:返回的树结构不稳定。

示例

import { initMdAstParser } from "mdbox/parser";
const parser = await initMdAstParser();
const { tree } = parser.parse("# Hello, *world*!");

贡献

本地开发
  • 克隆此仓库
  • 安装最新 LTS 版本的 Node.js
  • 使用 corepack enable 启用 Corepack
  • 使用 pnpm install 安装依赖项
  • 使用 pnpm devpnpm test 运行测试

许可

根据 MIT 许可发布。由 @pi0社区 💛 制作