GETTING STARTED 基礎知識

資料夾結構

網站骨架

當您建立一個新網站時,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 資料夾包含新內容的範本。詳見 詳細說明。

assets

assets 資料夾包含經常通過資產處理流程的全域資源,包括圖像、CSS、Sass、JavaScript 和 TypeScript 等。詳見 詳細說明。

config

config 資料夾保存網站設定,可能分散於多個子資料夾和檔案中。對於簡單配置或無需依環境不同而變化的專案,專案根目錄中的單一設定檔 hugo.toml 已經足夠。詳見 詳細說明。

content

content 資料夾包含組成網站內容的標記檔案(通常為 Markdown)及頁面資源。詳見 詳細說明。

data

data 資料夾保存數據檔案(JSON、TOML、YAML 或 XML),可用於增強內容、設定檔、本地化和導航功能。詳見 詳細說明。

i18n

i18n 資料夾存放多語言網站的翻譯表。詳見 詳細說明。

layouts

layouts 資料夾存放用於將內容、數據及資源轉換為完整網站的範本檔案。詳見 詳細說明。

public

public 資料夾包含已發布的網站內容,由執行 hugo 或 hugo server 指令生成。Hugo 會根據需要重建此資料夾及其內容。詳見 詳細說明。

resources

resources 資料夾包含 Hugo 的資產處理流程生成的快取輸出,例如 CSS 和圖像。執行 hugo 或 hugo server 時會生成此資料夾,並在需要時重新生成。

static

static 資料夾包含建置網站時直接複製到 public 資料夾的檔案,例如 favicon.ico、robots.txt 和網站驗證檔案。在引入 頁面組合包 和 資產處理流程 之前,此資料夾也用於存放圖像、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'

[[module.mounts]]
source = '/home/user/shared-content'
target = 'content'

掛載後,聯合集合檔案系統的結構如下所示:

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

你可以將目錄掛載至 archetypes、assets、content、data、i18n、layouts 和 static。詳情參見 詳細說明。

你還可以使用 Hugo 模組從 Git 儲存庫掛載目錄。詳情請參見 詳細說明。

主題骨架

當你建立新主題時,Hugo 會產生一個功能性主題骨架。舉例來說,執行以下指令:

hugo new theme my-theme

將創建如下的目錄結構(不顯示子目錄):

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

使用上述描述的聯合集合檔案系統,Hugo 會將這些目錄掛載到專案中的對應位置。當兩個檔案具有相同路徑時,專案目錄中的檔案會優先。這使得你可以例如通過將副本放置在專案目錄中的同一位置來覆蓋主題的模板。

如果你同時使用來自兩個或更多主題或模組的元件,並且發生路徑衝突,優先掛載的目錄將優先使用。