我遵循了将Markdown 编译为 VSCode 的 HTML 教程。我设法创建了一个 html 文件,marked my.md -o my.html
但这个文件只包含我的 markdown 的内容。我的意思是没有样式,没有html
和body
标签。html不完整。
你知道如何创建一个完整的 html 页面吗?标记的github仅列出了-o
选项。它甚至可以呈现完整的 html 吗?
我遵循了将Markdown 编译为 VSCode 的 HTML 教程。我设法创建了一个 html 文件,marked my.md -o my.html
但这个文件只包含我的 markdown 的内容。我的意思是没有样式,没有html
和body
标签。html不完整。
你知道如何创建一个完整的 html 页面吗?标记的github仅列出了-o
选项。它甚至可以呈现完整的 html 吗?
Markdown 呈现为 HTML 片段,而不是 HTML 文档。实际上。大多数 Markdown 解析器(包括原始参考实现)只输出 HTML 片段。
规则部分规定:
HTML 是一种发布格式;Markdown 是一种写作格式。
将 HTML 片段包装在标签中是发布<html>
和超出 Markdown 范围的行为。将片段包装在文档模板中是您的责任。<body>
在 Markdown 解析器中,有一些例外,但这些工具通常不仅仅是一个 Markdown 解析器。它们往往是发布平台,并且通常支持的不仅仅是 Markdown 。它们结合了 Markdown 解析、模板(Markdown 输出作为一个变量插入到模板中)和各种其他功能来创建一个完整的发布工具(例如,参见 Pandoc)。标记不是这样的工具。它只是一个 Markdown 解析器。但是,可能还有其他工具将标记包装为发布工具的一部分。或者,您可以针对您的特定需求构建自己的自定义解决方案(使用标记)。
如果是这样,那么为什么 Marked(或任何其他 Markdown 解析器)会有命令行界面?因此,您可以将输出通过管道传输到其他工具。
Marked 只处理基本的 markdown 内容到 html 内容的转换,希望你自带文档和样式。您可以将一个简单的节点脚本放在一起来处理这个问题:
// convertMd.js
var marked = require('marked')
var fs = require('fs')
const inFile = process.argv[2]
const outFile = process.argv[3]
const inputContent = fs.readFileSync(inFile, 'utf8')
const content = `<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
${marked(inputContent)}
</body>
</html>`
fs.writeFileSync(outFile, content)
tasks.json 在哪里:
{
// See http://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "0.1.0",
"command": "node",
"isShellCommand": true,
"args": ["./convertMd.js", "sample.md", "sample.html"],
"showOutput": "always"
}
其他命令行工具可能会提供更完整的 html 输出。