6

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

// 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 代码markdownlint)README.md、主文档 CSS 和或 highlightJS css,并让最后一行 ( marked(markdownString)) 的返回值成为我可以直接写入.html文件。

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

**BODY**:  

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

1 回答 1

10

根据这篇文章,文档曾经指定以下内容,但已从文档中删除:

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);
于 2018-02-17T18:37:51.153 回答