HB 是一個功能豐富的框架,但同時也具有着一定的複雜性。本文將詳細列出 HB 的環境要求,以便你可以正常地開發和使用 HB 模塊和主題。
hugo.toml
1[build]
2 writeStats = true
hugo.yaml
1build:
2 writeStats: true
hugo.json
1{
2 "build": {
3 "writeStats": true
4 }
5}
用於收集站點所使用到的 classes
、ids
和 tags
,以供 PurgeCSS 清除未使用的 CSS。
推薦儘可能地使用以下構建工具的最新版本。
HB 是一個模塊化的框架,需要安裝 Go 語言以下載和更新 Hugo 模塊。
1sudo pacman -S go
HB 使用 Hugo Pipes 來編譯 SCSS,因此需要擴展版(extended)的 Hugo。
若你位於中國大陸而沒有 VPN 時,你需要先設置 Go 代理服務器。
1go install -tags extended github.com/gohugoio/hugo@latest
版本控制系統,可通過下載頁面獲得。
1sudo pacman -S git
要求 Node.js
16
或後續版本。
HB 依賴以下 Node.js 包。
1sudo pacman -S nodejs
名稱 | 描述 |
---|---|
PostCSS CLI | 用於轉變樣式。 |
RTLCSS | 將 LTR CSS 轉換爲 RTL,如果你沒有 RTL 網站則可選。 |
Autoprefixer | 解析 CSS 並在 Can I Use 規則中添加對應的前綴。 |
PurgeCSS | 移除未使用的 CSS。 |
NPM 已被包含於 Node.js 安裝中,你可以選擇局部或全局地安裝這些包。
1npm i -D postcss-cli @fullhuman/postcss-purgecss autoprefixer rtlcss
局部安裝將依賴寫入 package.json
,以便部署時通過 npm i
安裝這些包,而無需記住這些繁雜的包名。
1sudo npm i -g postcss-cli @fullhuman/postcss-purgecss autoprefixer rtlcss
該命令只需執行一次,後續的 HB 站點無需再次執行此命令。
兩者都是有效的,HB 會優先局部查找需要的包。
publishDir
必須爲 public
它受到關於共享 PurgeCSS 配置的 HB 實現的限制。
該限制以於 v0.7.2 修復。
若需要在生產模式下使用 Hugo Server,需要指定 --disableFastRender
和 --renderToDisk
,否則 PurgeCSS 和 PostCSS 會出現意想不到的問題。
1hugo server \
2 --disableFastRender \
3 --renderToDisk \
4 -e production \
5 -b http://localhost:1314 \
6 -p 1314
hb
和 hugopress
參數HB 依賴於模塊間配置的深度合併,然而語言範圍的參數將會覆蓋覆蓋模塊的配置,而非深度合併,這將導致各種意想不到的問題。比如以下的配置示例是不允許的。
hugo.toml
1[language]
2 [language.en]
3 [language.en.params]
4 [language.en.params.hb]
5 foo = 'bar'
6 [language.en.params.hugopress]
7 foo = 'bar'
8 [language.zh-hans]
9 [language.zh-hans.params]
10 [language.zh-hans.params.hb]
11 foo = 'bar'
12 [language.zh-hans.params.hugopress]
13 foo = 'bar'
hugo.yaml
1language:
2 en:
3 params:
4 hb:
5 foo: bar
6 hugopress:
7 foo: bar
8 zh-hans:
9 params:
10 hb:
11 foo: bar
12 hugopress:
13 foo: bar
hugo.json
1{
2 "language": {
3 "en": {
4 "params": {
5 "hb": {
6 "foo": "bar"
7 },
8 "hugopress": {
9 "foo": "bar"
10 }
11 }
12 },
13 "zh-hans": {
14 "params": {
15 "hb": {
16 "foo": "bar"
17 },
18 "hugopress": {
19 "foo": "bar"
20 }
21 }
22 }
23 }
24}
Cloudflare Rocket Loader 缺少了 DOMContentLoaded
事件,會導致很多模塊失效,即便我們爲此提供了一個補丁,但得不償失,禁用該功能是目前最佳選擇。