1

我遵循了将Markdown 编译为 VSCode 的 HTML 教程。我设法创建了一个 html 文件,marked my.md -o my.html但这个文件只包含我的 markdown 的内容。我的意思是没有样式,没有htmlbody标签。html不完整

你知道如何创建一个完整的 html 页面吗?标记的github仅列出了-o选项。它甚至可以呈现完整的 html 吗?

4

2 回答 2

1

Markdown 呈现为 HTML 片段,而不是 HTML 文档。实际上。大多数 Markdown 解析器(包括原始参考实现)只输出 HTML 片段。

规则部分规定:

HTML 是一种发布格式;Markdown 是一种写作格式。

将 HTML 片段包装在标签中是发布<html>和超出 Markdown 范围的行为。将片段包装在文档模板中是您的责任。<body>

在 Markdown 解析器中,有一些例外,但这些工具通常不仅仅是一个 Markdown 解析器。它们往往是发布平台,并且通常支持的不仅仅是 Markdown 。它们结合了 Markdown 解析、模板(Markdown 输出作为一个变量插入到模板中)和各种其他功能来创建一个完整的发布工具(例如,参见 Pandoc)。标记不是这样的工具。它只是一个 Markdown 解析器。但是,可能还有其他工具将标记包装为发布工具的一部分。或者,您可以针对您的特定需求构建自己的自定义解决方案(使用标记)。

如果是这样,那么为什么 Marked(或任何其他 Markdown 解析器)会有命令行界面?因此,您可以将输出通过管道传输到其他工具。

于 2016-11-29T23:49:56.027 回答
1

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 输出。

于 2016-11-29T23:40:27.773 回答