You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jekyll构建期间如何将someFancyPage.md重命名为同目录下的index.md?

解决Jekyll构建时将指定MD文件重命名为原目录下的index.md

针对你的需求——构建过程中把目录下的someFancyPage.md转为同目录的index.md,同时保留原文件(让你的插件能正常处理该文件夹),这里提供两种可行方案:

方法1:使用相对路径的Permalink(最简单)

Jekyll默认的Permalink会解析为根目录的绝对路径,但你可以通过相对路径写法让生成的文件留在原目录里:

  1. 打开someFancyPage.md,在Front Matter中添加:

    ---
    permalink: ./index.md
    ---
    

    (如果你的目标是生成index.html作为目录首页,把index.md改成index.html即可)

  2. 若你需要输出MD格式而非默认的HTML,需在_config.yml中添加配置:

    markdown_ext: md
    output_ext: md
    

这样配置后,Jekyll构建时会在someFancyPage.md所在的目录下生成index.md,原文件保持不变,你的插件依然能识别包含someFancyPage.md的文件夹。

方法2:自定义Jekyll钩子插件(更灵活)

如果Permalink的方式无法满足你的复杂需求,你可以写一个简单的Jekyll钩子插件,在构建过程中手动处理文件重命名:

  1. 在项目的_plugins目录下创建rename_custom_page.rb文件(如果没有_plugins目录就新建一个),写入以下代码:

    Jekyll::Hooks.register :site, :post_render do |site|
      site.pages.each do |page|
        # 匹配目标文件
        next unless page.name == "someFancyPage.md"
    
        # 获取原文件所在目录的输出路径
        source_dir = File.dirname(page.path).sub(site.source, "")
        output_dir = File.join(site.dest, source_dir)
        FileUtils.mkdir_p(output_dir)
    
        # 将渲染后的内容写入同目录的index.md
        target_path = File.join(output_dir, "index.md")
        File.write(target_path, page.content)
      end
    end
    
  2. 构建项目时,这个插件会在页面渲染完成后,自动把someFancyPage.md的内容复制到同目录的index.md中,原文件完全不受影响,你的插件可以正常工作。

为什么之前的Permalink不生效?

你之前遇到的问题是因为Jekyll默认会把Permalink解析为根目录相对的绝对路径——比如写permalink: index.html,会生成在网站根目录下,而非原文件所在目录。而用./开头的写法,会强制Jekyll生成相对于原文件目录的路径,这正是你需要的效果。

内容的提问来源于stack exchange,提问作者Dennis Guse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:41:46