如何使用 npm 标记为 HighlightJS

How to use npm Marked with HighlightJS

你如何使用 npm Marked with HighlightJS?我正在尝试使我的文档自动化以进行解析和样式化。查看标记文档中的以下示例:

// Using async version of marked
marked(markdownString, function (err, content) {
  if (err) throw err;
  // console.log(content);
});

// Synchronous highlighting with highlight.js
marked.setOptions({
  highlight: function (code) {
    return require('highlight.js').highlightAuto(code).value;
  }
});

console.log(marked(markdownString)); 

我不知道如何使用 README.md 文件来代替带有手动转义特殊字符的字符串。使用示例不涉及对 .md 文档的任何引用作为 markdownString.

的输入

我如何将 markdown 字符串作为文档(例如形成一个名为 README.md 的文件)而不是手动转义的字符串传递,并让最终输出包含样式?

目标是能够传入 linted(我用的是 VS code markdownlint)README.md,主要文档 CSS 和/或 highlightJS css 并让最后一行 (marked(markdownString)) 的 return 值成为我可以直接写入 .html 文件的内容。

另一个注意事项:我的降价文件还指定了多行代码块中的语言。例如,我的 README.md 中的 JSON 的多行块如下所示:

**BODY**:  

```JSON
{
  "username": "example@example.com",
  "p2setting": "4xx72"
}
```

基于this post,文档曾经指定以下内容但已从文档中删除:

var fs     = require('fs');
var hljs   = require('highlight.js');
var marked = require('marked');

var markdownString = fs.readFileSync('./README.md');

marked.setOptions({
  highlight: function(code, lang) {
    return hljs.highlight(lang, code).value;
  }
});

var output = marked(markdownString);

请注意,您需要指定编码 fs.readFileSync('./README.md', "utf8")

一个有效的例子是:

const fs     = require('fs');
const hljs   = require('highlight.js');
const marked = require('marked');

const markdownString = fs.readFileSync('./README.md', "utf8");

const style1 = fs.readFileSync('./node_modules/highlight.js/styles/railscasts.css', "utf8");
// const style1 = fs.readFileSync('./node_modules/highlight.js/styles/solarized-dark.css', "utf8");

marked.setOptions({
  highlight: function(code) {
    return hljs.highlightAuto(code).value;
  }
});

const doc = `<!DOCTYPE html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <title>Marked</title>
  <style>${style1}</style>
  </head>
  <body>${marked(markdownString)}</body>
</html>  
`
fs.writeFileSync('./index.html',  doc);