md文档的命名存在空格,实际上在link时,将空格改成 %20
即可:
[text link](fileNamePrefix fileNamePostfix) error
[text link](fileNamePrefix%20fileNamePostfix) ok
但由于md文档编写者不同意,这样做,那没辙
只能去修改markdown解析部分了。
因为是使用的vuepress做markdown解析,所以在.vuepress/config.js
,添加如下代码
markdown: {
extendMarkdown: md => {
md.use(function (md) {
var defaultRender = md.renderer.rules.text
md.renderer.rules.text = function (tokens, idx, options, env, self) {
if (tokens[idx].content.startsWith("[") && tokens[idx].content.trim().endsWith(")")) {
const content = tokens[idx].content
const inline = content.substring(content.indexOf("[") + 1, content.indexOf("]"))
let contentEnd = content.substring(content.indexOf("(") + 1, content.length - 1).replace(" ", "%20")
return `<p><a href="` + contentEnd + `">` + inline + `</a></p>`
}
return defaultRender(tokens, idx, options, env, self);
};
})
}
},
markdown在link_open解析时,当link的路径中存在空格,就不会正确解析成link_open,会变成text类型,所以在解析text类型时,如果为[
开始,)
结束,就手动将内容包裹为link的html形式返回
实际上这样写不是很好,最好的方式应该是自己写插件去处理,但是markdown解析好复杂啊。。。所以就这样了
参考博文: markdown-it 插件如何写(一)