使用Node JS更改Markdown文本中的图像源

时间:2018-10-17 10:14:12

标签: node.js markdown

我有一些markdown文本,其中包含图像引用,但它们是相对路径,我需要使用NodeJS脚本将其修改为绝对路径。有什么方法可以通过简单的方式实现相同目的吗?

示例:

来源

![](myImage.png?raw=true)

结果

![](www.example.com/myImage.png?raw=true)

markdwon内容中有多个图像需要修改。

1 个答案:

答案 0 :(得分:0)

检查以下工作示例:https://repl.it/repls/BlackJuicyCommands

首先,您需要使用library(tidyverse) data %>% group_by(X, Y) %>% summarise(AvgBurntArea = mean(area)) %>% ggplot(aes(X, Y)) + geom_tile(aes(fill = AvgBurntArea)) 读取文件并将fs.readFile()解析为Buffer

现在您可以访问文件的文本,您需要用新的图像路径替换每个图像路径。捕获它的一种方法是使用regular expression。例如,您可以寻找string。我们只对替换](ANY_IMAGE_PATH.ANY_IMAGE_EXTENSION部分感兴趣。

正则表达式的一个示例可能是(可以改进!)(请参见https://regex101.com/r/xRioBq/1,查看它的实际作用):

ANY_IMAGE_PATH

这将查找文字const regex = /\]\((.+)(?=(\.(svg|gif|png|jpe?g)))/g ,后跟文字],后跟任意序列(即(),直到找到文字.+,后跟{ {1}},.svggif / png。正则表达式后的jpeg是匹配所有事件(不仅是第一个事件)所必需的。

Javascript / node(<版本9)does not support lookbehind。我使用的正则表达式在图像路径之前包含jpg,然后稍后将其过滤掉(或者您可以使用更复杂的正则表达式)。

g将图像路径捕获为一组。然后,您可以使用字符串的替换功能。 replace函数接受正则表达式作为第一个参数。第二个参数可以是一个函数,它接收完全匹配(在这种情况下为](,然后将所有捕获的组作为以下参数作为第一个参数)。

enter image description here

使用节点模块(.+)](image_path_without_extension更改url并返回捕获的组(在我称为参数path的下面)。因为我们还将替换url,所以它应该包含在返回值中。

imagePath

See the repl example to see it live in action.注意:在repl示例中,它被写入另一个文件。如果要覆盖,请使用相同的文件名。