本文介紹了該模塊的目錄結構、工作原理和一些開發約定。
成為我們的資助者或贊助商,以支持我們的工作。
1├── assets
2│ └── hb
3│ └── modules
4│ └── vendor-name
5│ ├── js
6│ │ └── index.ts
7│ └── scss
8│ ├── index.scss
9│ └── variables.tmpl.scss
10├── go.mod
11├── hugo.toml
12├── i18n
13├── layouts
14 └── partials
15 └── hugopress
16 └── modules
17 └── hb-vendor-name
18 ├── attributes
19 │ └── ...
20 └── hooks
21 └── ...
22└── ...
HB 將
scss/variables.tmpl.scss
加載 SCSS 變量,然後導入並編譯 scss/index.scss
到 CSS 包中。js/index.ts
到 JS 包中。purgecss.config.toml
用於添加樣式到 PurgeCSS 安全名單,以避免其被移除。除了 go.mod
和 Hugo 配置文件,其餘的文件都是可選的。
scss/variables.tmpl.scss
用於定義 SCSS 變量的模板,其允許使用 Hugo 模板語法,比如從 Hugo 配置中讀取參數。
scss/index.scss
將會被自動導入並編譯到 CSS 包中,你可以使用上述定義的變量。
js/index.ts
將會被自動導入並編譯到 JS 包中。
purgecss.config.toml
用於追加樣式到 PurgeCSS 安全列表,以避免樣式被移除。
我們強烈推薦按照 vendor-name
形式對模塊進行命名,以避免和 HB 內置模塊相沖突。
vendor
:你的名字或組織的名稱。name
:模塊的名稱。custom
模塊名是為用戶保留的。
請參閱創建一個模塊。
由於 Hugo 配置是大小寫不敏感的,推薦使用 snake_case 命名,除此之外,你需要以模塊名對參數進行分類。
模塊名同樣需要按照 snake_case 進行命名,因為包含 -
的鍵名和 TOML 相性不好。
假設這有一個第三方的模塊,名為 razonyang-hello
,其參數如下:
hugo.toml
1[params]
2 [params.hb]
3 [params.hb.razonyang_hello]
4 foo = 'bar'
hugo.yaml
1params:
2 hb:
3 razonyang_hello:
4 foo: bar
hugo.json
1{
2 "params": {
3 "hb": {
4 "razonyang_hello": {
5 "foo": "bar"
6 }
7 }
8 }
9}