如何在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
答案 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);