上次文章中提到,把文章.md和图片组织到同一个目录中,这是当时自己想出来的。后来了解到这其实是hugo比较推荐的文章组织方式,可以把每一篇文章的资源集中在一起。hugo中也专门为此定义了一个名称叫:叶子包(Leaf Bundle),用来组织博客文章,组织形式为每篇文章独立目录 + index.md,并且这也是Hugo的最佳实践之一。即使文章没有图片资源,使用叶子包结构也不会产生负面影响,反而为未来可能的资源扩展预留了灵活性。
目录结构:

PLAINTEXT
content/
└─ posts/
   └─ my-article/   # 文章目录
      ├─ index.md    # 必须使用这个文件名
      ├─ cover.jpg
      └─ diagram.png
点击展开查看更多

完美支持相对路径,图片引用直接使用![图片](diagram.png)即可,此种方式deepseek帮助分析了各个方面的优劣点,最后总结是:利远大于弊

了解叶子包(Leaf Bundle)后,有必要再深入认识一下。 Hugo内容管理中的核心概念是页面包(Page Bundles),是资源集合的统称,其中包含两种具体类型。

对比:

特性Leaf Bundle(叶子包)Branch Bundle(分支包)
用途单页内容及资源集合多页面或 section 的资源集合
入口文件index.md_index.md
资源类型允许页面文件(如其他 .md仅允许非页面文件(如图片)
嵌套限制不可嵌套其他 Bundle可嵌套 Leaf 或 Branch Bundle
输出形式生成独立页面(如 /post/abc/生成列表页(如 /blog/

(说人话就是一个用来组织每篇文章的资源,一个用来组织所有文章分类和分支、标签页等)

之后本站将使用叶子包组织文章页面。

补充一个把posts在目录中新建.md的同名文件夹将其移入并重命名为index.md的脚本。

POWERSHELL
# 修正PowerShell脚本 - 无中文字符问题
Get-ChildItem -Path . -File -Filter "2025*.md" | ForEach-Object {
    $folderName = $_.BaseName
    $folderPath = Join-Path -Path $_.Directory -ChildPath $folderName
    $newFilePath = Join-Path -Path $folderPath -ChildPath "index.md"
    
    if (-not (Test-Path -LiteralPath $folderPath)) {
        New-Item -ItemType Directory -Path $folderPath | Out-Null
        Move-Item -LiteralPath $_.FullName -Destination $newFilePath
        Write-Host "Moved: $($_.Name) -> $folderName/index.md"
    } else {
        Write-Host "Skipped: Folder $folderName already exists."
    }
}

Write-Host "Operation completed"
pause
点击展开查看更多

版权声明

作者: 自然数

链接: https://zrs.me/38/

许可证: CC BY-NC-SA 4.0

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。请注明来源,非商业性使用,并遵循相同的许可协议。

评论

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键