使用 Jekyll 3,我可以在实际 Markdown 解析之前转换帖子的 Markdown 吗?

Nic*_*zey 3 markdown jekyll jekyll-extensions kramdown responsive-images

我想使用Jekyll 响应式图像插件为我的帖子图像生成带有srcset/sizes属性的适当响应式图像。

但我也希望能够在提供实时预览的软件中编辑我的帖子,例如MacDown,它只理解图像的标准 Markdown 语法。

这就是为什么我想知道是否有一种方法 - 某种插件 - 告诉 Jekyll 转换图像的标准 Markdown 语法,我会将其放入我的 Markdown 文件中......

![alt text](path/to/image.jpg)

...进入特定于Jekyll 响应式图像插件的语法:

{% responsive_image path: path/to/image.jpg alt: "alt text" %}

然后,Jekyll 可以继续使用 Kramdown 生成 HTML……

我还在插件的 Github 中创建了一个问题,但更通用的答案也很好,并且可能对其他需求有用。

小智 5

是的,这绝对是可能的。从 Jekyll 3 开始,每个文件扩展名可以有多个转换器。这允许您创建一个转换器,如:

class ResponsiveImageify < Jekyll::Converter
  priority :high

  def matches(ext)
    ext.downcase == ".md"
  end

  def convert(content)
    content.gsub(/\!\[(.+)\]\((.+)\)/, '{% responsive_image path: \2 alt: \1  %}')
  end
end
Run Code Online (Sandbox Code Playgroud)

该转换器将 gsub任何.md文件的内容。

希望这可以帮助!