Hugo入門詳細教程

来源:https://www.cnblogs.com/kingfsen/archive/2019/04/01/10638628.html
-Advertisement-
Play Games

原文鏈接https://youendless.com/post/hugo_base/ ,主題 https://github.com/kingfsen/Mainroad 首先訪問Github下載Hugo的應用程式,Hugo各版本release文件下載地址 https://github.com/gohu ...


原文鏈接https://youendless.com/post/hugo_base/ ,主題 https://github.com/kingfsen/Mainroad

首先訪問Github下載Hugo的應用程式,Hugo各版本release文件下載地址 https://github.com/gohugoio/hugo/releases , windows請選擇下載hugo_0.xx.0_Windows-64bit.zip。 下載完成止之後解壓文件至D:\soft\hugo_0.54,然後把該路徑添加到系統環境變數Path中,執行 hugo version 命令驗證是否安裝成功。

C:\Users\kingfsen>hugo version
Hugo Static Site Generator v0.54.0-B1A82C61 windows/amd64 BuildDate: 2019-02-01T09:42:02Z

通過執行 hugo –help 查看命令幫助

C:\Users\kingfsen>hugo --help
hugo is the main command, used to build your Hugo site.

Hugo is a Fast and Flexible Static Site Generator
built with love by spf13 and friends in Go.

Complete documentation is available at http://gohugo.io/.

Usage:
  hugo [flags]
  hugo [command]

Available Commands:
  config      Print the site configuration
  convert     Convert your content to different formats
  env         Print Hugo version and environment info
  gen         A collection of several useful generators.
  help        Help about any command
  import      Import your site from others.
  list        Listing out various types of content
  new         Create new content for your site
  server      A high performance webserver
  version     Print the version number of Hugo
Copy

執行 hugo config查看hugo的預設配置信息,各配置參數可以通過在站點的全局配置文件config.toml中進行修改。

目錄結構

在E盤新建目錄website,然後通過Hugo把站點生成到E:/website下,比如我現在新建一個站點second-blog,執行如下命令

kingfsen@LAPTOP-M85G5JUT MINGW64 /e/website
$ hugo new site E:/website/second-blog
Congratulations! Your new Hugo site is created in E:\website\second-blog.

Just a few more steps and you're ready to go:

1. Download a theme into the same-named folder.
   Choose a theme from https://themes.gohugo.io/, or
   create your own with the "hugo new theme <THEMENAME>" command.
2. Perhaps you want to add some content. You can add single files
   with "hugo new <SECTIONNAME>\<FILENAME>.<FORMAT>".
3. Start the built-in live server via "hugo server".

Visit https://gohugo.io/ for quickstart guide and full documentation.
Copy

命令執行成功之後查看E:/website/second-blog目錄,查看文件目錄結構。

│  config.toml
│
├─archetypes
│      default.md
│
├─content
├─data
├─layouts
├─static
└─themes
Copy
  • config.toml
    站點全局的參數配置文件
  • archetypes
    Hugo的markdown文件中前置數據Front Matter定義的結構,預設使用的是default.md文件,可以自定義,然後在config.toml中指定自定義的結構文件,打開default.md文件。

      ---
      title: "{{ replace .Name "-" " " | title }}"
      date: {{ .Date }}
      draft: true
      ---
    
    Copy

    這是一種yaml格式,前面的文章說過,Front Matter支持三種格式,除了yaml,還支持toml,json方式。

    toml

    +++
    title = "{{ replace .Name "-" " " | title }}"
    date = {{ .Date }}
    draft = true
    +++
    
    Copy

    json

    {
      "title":"{{ replace .Name "-" " " | title }}",
      "date":{{ .Date }},
      "draft":true
    }
    
    Copy

    至於喜歡哪種格式,可以在config.toml中進行配置,預設使用的是yaml格式。通過執行hugo new 命令生成的markdown文件,頭部預設會有這段渲染之後的Front Matter,一般我們會把draft屬性去掉,draft草稿的意思,有這個屬性的md文件不會渲染輸出, 當然通過hugo –buildDrafts可以強制輸出。

  • content
    存放網頁內容的目錄,即我們編寫的markdown文件都存放在此目錄,此目錄是Hugo的預設源目錄,在E:/website/second-blog下執行命令 hugo new post/hugo_introduce.md之後, 則會在content目錄下生成子目錄post,post中有一個hugo_introduce.md文件。

  • data
    data目錄用來存放數據文件,一般是json文件,Hugo提供了相關命令可以從data目錄下讀取相關的文件數據,然後渲染到HTML頁面中,將業務數據與模板分離。

  • layouts
    存放自定義的模板文件,Hugo優先使用layouts目錄下的模板,未發現再去themes目錄下查找。

  • static
    存放靜態文件,比如css、js、img等文件目錄,Hugo在渲染時,會直接將static目錄下的文件直接複製到public目錄下,不會做任何渲染。

  • themes
    存放網站主題,可以下載多個主題,themes目錄下的每個子目錄代表了一個主題,可以通過在config.toml中通過參數theme指定主題,即theme目錄下的子目錄名字, 也可以在執行hugo命令渲染時通過增加flag參數–theme=xx指定。

配置主題

一個靜態站點的佈局外觀離不開css樣式,在Hugo中通過主題theme來管理樣式,在Hugo的官方網站即可預覽下載社區提供的很多主題,當然我們也可以 通過github下載對應的主題,點擊這裡可以獲取Hugo的全部主題,大部分主題提供了圖片預覽或者Demo線上預覽,自由選擇下載即可。

這裡我選擇排在第一個的主題AllinOne,進入E:\website\second-blog\themes,執行git clone命令下載主題。

kingfsen@LAPTOP-M85G5JUT MINGW64 /e/website/second-blog/themes
$ git clone https://github.com/orianna-zzo/AllinOne.git
Cloning into 'AllinOne'...
remote: Enumerating objects: 962, done.
remote: Total 962 (delta 0), reused 0 (delta 0), pack-reused 962
Receiving objects: 100% (962/962), 24.18 MiB | 32.00 KiB/s, done.
Resolving deltas: 100% (357/357), done.

命令執行成功之後,在themes目錄下則有主題目錄AllinOne,這個主題中的Example中圖片有點多,比較大。在github上可以查看該主題的基本介紹以及詳細的參數設置,主題很多都是個人提供出來,可能參差不齊,自行判斷。 我們也可以製作自己的主題,上傳到github上,或者在github上fork一個主題分支,在別人的基礎上進行開發定製。

站點調試

Hugo提供了liveload方式,在執行hugo命令時通過增加flag參數即可。服務啟動之後,可以一邊修改內容文件或者html模板,瀏覽器會馬上刷新,實時展示最新結果,在本地調試開發非常方便。 進入站點根目錄second-blog目錄,新建一個md文件,就比如我當前這個頁面hugo_introduce.md文件,markdown這種輕量型標記語言非常容易學會,花點時間看幾遍其語法就能學會。

$ hugo new post/hugo_introduce.md
E:\website\second-blog\content\post\hugo_introduce.md created

文件創建成功之後,通過其他工具打開hugo_introduce.md文件豐富一下內容,我們可以在本地啟動調試,這裡我為了方便直接把md文件中的draft屬性去掉了。

hugo server --watch --theme=AllinOne

命令執行之後,發現報了一堆錯誤,仔細一看就是在主題下的模板強制要求定義Site.Params.slidesDirPath等屬性,打開config.toml配置文件增加參數即可,由於我這裡沒有準備圖片, 暫時就用AllinOne自帶的預設配置,後序準備好了圖片直接放在站點根目錄下的static即可,再替換路徑即可。

baseURL = "http://example.org/"
languageCode = "en-us"
title = "Hugo入門詳細教程"

[Params]
slidesDirPath = "themes/AllinOne/static/img/header-slides"  
slidesDirPathURL = "img/header-slides"

配置增加之後,記得點擊保存,再次啟動本地服務,命令執行成功之後,服務預設在localhost的1313埠,至於埠也可以自行在config.toml中配置, 不知道參數名是什麼,直接執行hugo config命令查看。

$ hugo server --watch --theme=AllinOne
Building sites …
                   | EN
+------------------+-----+
  Pages            |   7
  Paginator pages  |   0
  Non-page files   |   0
  Static files     | 108
  Processed images |   0
  Aliases          |   0
  Sitemaps         |   1
  Cleaned          |   0

Total in 53 ms
Watching for changes in E:\website\second-blog\{content,data,layouts,static,themes}
Watching for config changes in E:\website\second-blog\config.toml
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop
Copy

服務啟動之後,用瀏覽器訪問 http://localhost:1313 ,此時沒有文章內容,豐富一下hugo_introduce.md文件,推薦使用Notepad2編寫markdown文件,非常簡潔, 當然你喜歡通過第三方專業的markdown編輯軟體也可以,不過個人感覺真沒那個必要。

---
title: "Hugo構建靜態站點入門"
date: 2019-03-31T12:54:26+08:00
description: "介紹Hugo生成靜態網站的基礎知識,讓你快速入門,輕鬆部署屬於自己的靜態站點"
thumbnail: "img/hugo.png"
Tags: 
- hugo
Categories:
- hugo
---

首先訪問Github下載Hugo的應用程式,Hugo各版本release文件下載地址 https://github.com/gohugoio/hugo/releases , windows請選擇下載hugo_0.xx.0_Windows-64bit.zip。
下載完成止之後解壓文件至D:\soft\hugo_0.54,然後把該路徑添加到系統環境變數Path中,執行 hugo version 命令驗證是否安裝成功。
Copy

查看頁面,HTML已經實時渲染了,一邊編寫文章,一邊查看頁面效果是否與預期一致,非常方便,速度很快。

theme

站點部署

通過直接執行hugo server命令在站點目錄下不會生成輸出目錄public,這個目錄是預設的輸出目錄,當然可以通過命令或者config.toml進行配置。

$ hugo --theme=AllinOne
Building sites …
                   | EN
+------------------+-----+
  Pages            |  14
  Paginator pages  |   0
  Non-page files   |   0
  Static files     | 108
  Processed images |   0
  Aliases          |   1
  Sitemaps         |   1
  Cleaned          |   0

Total in 129 ms
 
Copy

站點調試沒問題之後,則可以部署到伺服器上了。通過執行hugo命令會將渲染後的站點文件全部輸出到站點目錄下的public目錄中, 然後可以把public目錄中的東西直接提交到github上,或者以Github Pages方式發佈,或者部署到自己伺服器上,由於站點文件均是靜態文件, 只需一個Nginx即可將站點運行起來,項目每次有更新,只需先執行 git pull,然後通過命令nginx -s reload重新載入即可。

本篇文章講解了Hugo的基本入門操作,後面會講解Hugo的運行機制以及詳細的其他站點配置,請通過點擊Tag中的hugo或者Category中的hugo閱讀Hugo相關博文。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 註 : 本文章按照菜鳥教程 Flex佈局語法教程為原型稍加修改,以方便自己學習. 菜鳥教程地址:http://www.runoob.com/w3cnote/flex-grammar.html 2009年,W3C提出了一種新的方案—-Flex佈局,可以簡便、完整、響應式地實現各種頁面佈局。目前,它已經 ...
  • 2019年4月1日,我註冊了博客園的賬戶,開始記錄我的代碼日常。 學習web前端,是我之前沒有考慮過的事情。在大學渾渾噩噩度過了四年後,終於意識到就業的危機,剛入學的時候聽到學長學姐們說畢業即失業,感覺離自己很遙遠,但臨近畢業我卻親身體會到了。可能是習慣了高中老師們的督促,初入大學校園卻迷失了自我, ...
  • 使用eclipse打開,若用瀏覽器,且出現亂碼,將格式<meta charset="UTF-8">改為<meta charset="GB2316">規格顯示 博客.html(增加了即使驗證的功能) 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset ...
  • 變數的聲明 在JavaScript程式中,使用一個變數之前應當先聲明,變數時使用關鍵字var來聲明的,如下所示:var num;var sum; 也可以寫成var num,sum,avg;如果只是聲明變數而沒有給變數賦值,預設的值是undefined 可以將變數的初始賦值和變數聲明合寫在一起如下所示 ...
  • JavaScript中創建數組有兩種方式 (一)使用 Array 構造函數: (二)使用數組字面量表示法: 數組的方法有數組原型方法,也有從object對象繼承來的方法,這裡我們只介紹數組的原型方法,數組原型方法主要有以下這些: join()push()和pop()shift() 和 unshift ...
  • 前陣子一直忙著找實習,發現已經有一段時間沒寫博客了,面試很多時候會被問到模塊化,今天就讓我們一起來總結下把 一、什麼是模塊化 在js出現的時候,js一般只是用來實現一些簡單的交互,後來js開始得到重視,用來實現越來越複雜的功能,而為了維護的方便,我們也把不同功能的js抽取出來當做一個js文件,但是當 ...
  • `this Javascript this this`的綁定和函數聲明的位置沒有任何關係,只取決於函數的調用方式。 綁定規則 綁定根據函數的調用方式基本上有四種規則: 全局性調用 函數的最通常用法, 代表全局對象: 作為對象的方法調用 函數作為某個對象的方法調用時, 指向這個上級對象: 當存在多重調 ...
  • 1.json序列化回顧:json序列化預設數據結構 第一種:手動轉字元串 第二種:繼承json重寫它的default方法2.什麼是前端? 任何與用戶直接交互的界面都可以稱之為前端3.為什麼學習前端? 略 前端與用戶交互,寫程式不就是為了這個麽?雖然是後端工程師,但是若對前端一點都不瞭解,就太low了 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...