如何使用npm标记为HighlightJS

时间:2018-02-17 17:11:42

标签: readme javascript-marked highlightjs

如何在Marked使用npm 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代码markdownlint)README.md,主文档CSS和/或者.jpg的css,并且返回最后一行的返回值({ {1}})我可以直接写入marked(markdownString)文件。

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

.html

1 个答案:

答案 0 :(得分:2)

基于this帖子,文档曾指定以下内容,但已将其从文档中删除:

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);