HUGO
Menu
GitHub 87548 stars Mastodon

目錄結構

Hugo 目錄結構概述。

每個 Hugo 項目都是一個目錄,包含貢獻於網站內容、結構、行為和展示的多個子目錄。

站點骨架

創建新站點時,Hugo 會生成項目骨架。例如,此命令:

hugo new site my-site

創建此目錄結構:

my-site/
├── archetypes/
│   └── default.md
├── assets/
├── content/
├── data/
├── i18n/
├── layouts/
├── static/
├── themes/
└── hugo.toml         <-- 站點配置

根據需求,您可能希望將站點配置組織到子目錄中:

my-site/
├── archetypes/
│   └── default.md
├── assets/
├── config/           <-- 站點配置
│   └── _default/
│       └── hugo.toml
├── content/
├── data/
├── i18n/
├── layouts/
├── static/
└── themes/

構建站點時,Hugo 會創建 public 目錄,通常還會創建 resources 目錄:

my-site/
├── archetypes/
│   └── default.md
├── assets/
├── config/       
│   └── _default/
│       └── hugo.toml
├── content/
├── data/
├── i18n/
├── layouts/
├── public/       <-- 構建站點時創建
├── resources/    <-- 構建站點時創建
├── static/
└── themes/

目錄說明

每個子目錄都對網站的內容、結構、行為或展示有所貢獻。

archetypes
archetypes 目錄包含新內容的模板。詳見 archetypes
assets
assets 目錄包含全局資源,通常通過資源管道處理。這包括圖片、CSS、Sass、JavaScript 和 TypeScript 等資源。詳見 Hugo Pipes
config
config 目錄包含站點配置,可能分為多個子目錄和文件。對於配置簡單或不需要在不同環境中表現不同的項目,在項目根目錄中使用單個配置文件 hugo.toml 就足夠了。詳見 配置目錄
content
content 目錄包含構成網站內容的標記文件(通常是 Markdown)和頁面資源。詳見 內容組織
data
data 目錄包含數據文件(JSON、TOML、YAML 或 XML),用於增強內容、配置、本地化和導航。詳見 數據源
i18n
i18n 目錄包含多語言站點的翻譯表。詳見 多語言
layouts
layouts 目錄包含將內容、數據和資源轉換為完整網站的模板。詳見 模板
public
public 目錄包含運行 hugohugo server 命令時生成的已發布網站。詳見 構建站點
resources
resources 目錄包含 Hugo 資源管道的緩存輸出,在運行 hugohugo server 命令時生成。默認情況下,此緩存目錄包括 CSS 和圖片。Hugo 會根據需要重新創建此目錄及其內容。
static
static 目錄包含構建站點時將復制到 public 目錄的文件。例如:favicon.icorobots.txt 和驗證網站所有權的文件。在引入 頁面捆綁資源管道 之前,static 目錄也用於存放圖片、CSS 和 JavaScript 文件。
themes
themes 目錄包含一個或多個 主題,每個主題都有自己的子目錄。

聯合文件系統

Hugo 創建聯合文件系統,允許您將兩個或多個目錄掛載到同一位置。例如,假設您的主目錄在一個目錄中包含 Hugo 項目,在另一個目錄中包含共享內容:

home/
└── user/
    ├── my-site/            
    │   ├── content/
    │   │   ├── books/
    │   │   │   ├── _index.md
    │   │   │   ├── book-1.md
    │   │   │   └── book-2.md
    │   │   └── _index.md
    │   ├── themes/
    │   │   └── my-theme/
    │   └── hugo.toml
    └── shared-content/     
        └── films/
            ├── _index.md
            ├── film-1.md
            └── film-2.md

您可以使用掛載在構建站點時包含共享內容。在站點配置中:

module:
  mounts:
  - source: content
    target: content
  - source: /home/user/shared-content
    target: content
[module]
  [[module.mounts]]
    source = 'content'
    target = 'content'
  [[module.mounts]]
    source = '/home/user/shared-content'
    target = 'content'
{
   "module": {
      "mounts": [
         {
            "source": "content",
            "target": "content"
         },
         {
            "source": "/home/user/shared-content",
            "target": "content"
         }
      ]
   }
}

當一個目錄疊加在另一個目錄之上時,您必須掛載這兩個目錄。

Hugo 不遵循符號鏈接。如果您需要符號鏈接提供的功能,請改用 Hugo 的聯合文件系統。

掛載後,聯合文件系統具有此結構:

home/
└── user/
    └── my-site/
        ├── content/
        │   ├── books/
        │   │   ├── _index.md
        │   │   ├── book-1.md
        │   │   └── book-2.md
        │   ├── films/
        │   │   ├── _index.md
        │   │   ├── film-1.md
        │   │   └── film-2.md
        │   └── _index.md
        ├── themes/
        │   └── my-theme/
        └── hugo.toml

當兩個或多個文件具有相同路徑時,優先順序遵循掛載順序。例如,如果共享內容目錄包含 books/book-1.md,它將被忽略,因為項目的 content 目錄首先被掛載。

您可以將目錄掛載到 archetypesassetscontentdatai18nlayoutsstatic。詳見 掛載

您還可以使用 Hugo Modules 從 Git 倉庫掛載目錄。詳見 Hugo Modules

主題骨架

創建新主題時,Hugo 會生成一個功能齊全的主題骨架。例如,此命令:

hugo new theme my-theme

創建此目錄結構(未顯示子目錄):

my-theme/
├── archetypes/
├── assets/
├── content/
├── data/
├── i18n/
├── layouts/
├── static/
└── hugo.toml

使用上述聯合文件系統,Hugo 將這些目錄中的每一個掛載到項目中的相應位置。當兩個文件具有相同路徑時,項目目錄中的文件優先。這允許您通過將副本放在項目目錄中的相同位置來覆蓋主題的模板。

如果您同時使用兩個或多個主題或模塊的組件,並且發生路徑沖突,則第一個掛載優先。


Last updated: January 1, 0001
Improve this page