Hugo 配置媒体类型
Hugo 配置媒体类型。
media type(媒体类型,以前称为 MIME type)是文件格式和传输内容的两部分标识符。例如,JSON 数据的媒体类型是 application/json
配置的媒体类型在 Hugo 中有多种用途,包括定义 输出格式。这是默认媒体类型配置的表格形式:
| type | suffixes |
|---|---|
| application/json | [json] |
| application/manifest+json | [webmanifest] |
| application/octet-stream | [webmanifest] |
| application/pdf | [pdf] |
| application/rss+xml | [xml rss] |
| application/toml | [toml] |
| application/wasm | [wasm] |
| application/xml | [xml] |
| application/yaml | [yaml yml] |
| font/otf | [otf] |
| font/ttf | [ttf] |
| image/bmp | [bmp] |
| image/gif | [gif] |
| image/jpeg | [jpg jpeg jpe jif jfif] |
| image/png | [png] |
| image/svg+xml | [svg] |
| image/tiff | [tif tiff] |
| image/webp | [webp] |
| text/asciidoc | [adoc asciidoc ad] |
| text/calendar | [ics] |
| text/css | [css] |
| text/csv | [csv] |
| text/html | [html htm] |
| text/javascript | [js jsm mjs] |
| text/jsx | [jsx] |
| text/markdown | [md mdown markdown] |
| text/org | [org] |
| text/pandoc | [pandoc pdc] |
| text/plain | [txt] |
| text/rst | [rst] |
| text/tsx | [tsx] |
| text/typescript | [ts] |
| text/x-gotmpl | [gotmpl] |
| text/x-sass | [sass] |
| text/x-scss | [scss] |
| video/3gpp | [3gpp 3gp] |
| video/mp4 | [mp4] |
| video/mpeg | [mpg mpeg] |
| video/ogg | [ogv] |
| video/webm | [webm] |
| video/x-msvideo | [avi] |
上表中的 suffixes 列显示与每种媒体类型关联的后缀。例如,Hugo 将 .html 和 .htm 文件与 text/html 媒体类型关联。
第一个后缀是主后缀。在命名模板文件时使用主后缀。例如,创建 RSS 源模板时,使用 xml 后缀。
默认配置
以下是与上表匹配的默认配置:
mediaTypes:
application/json:
delimiter: .
suffixes:
- json
application/manifest+json:
delimiter: .
suffixes:
- webmanifest
application/octet-stream:
delimiter: .
application/pdf:
delimiter: .
suffixes:
- pdf
application/rss+xml:
delimiter: .
suffixes:
- xml
- rss
application/toml:
delimiter: .
suffixes:
- toml
application/wasm:
delimiter: .
suffixes:
- wasm
application/xml:
delimiter: .
suffixes:
- xml
application/yaml:
delimiter: .
suffixes:
- yaml
- yml
font/otf:
delimiter: .
suffixes:
- otf
font/ttf:
delimiter: .
suffixes:
- ttf
image/bmp:
delimiter: .
suffixes:
- bmp
image/gif:
delimiter: .
suffixes:
- gif
image/jpeg:
delimiter: .
suffixes:
- jpg
- jpeg
- jpe
- jif
- jfif
image/png:
delimiter: .
suffixes:
- png
image/svg+xml:
delimiter: .
suffixes:
- svg
image/tiff:
delimiter: .
suffixes:
- tif
- tiff
image/webp:
delimiter: .
suffixes:
- webp
text/asciidoc:
delimiter: .
suffixes:
- adoc
- asciidoc
- ad
text/calendar:
delimiter: .
suffixes:
- ics
text/css:
delimiter: .
suffixes:
- css
text/csv:
delimiter: .
suffixes:
- csv
text/html:
delimiter: .
suffixes:
- html
- htm
text/javascript:
delimiter: .
suffixes:
- js
- jsm
- mjs
text/jsx:
delimiter: .
suffixes:
- jsx
text/markdown:
delimiter: .
suffixes:
- md
- mdown
- markdown
text/org:
delimiter: .
suffixes:
- org
text/pandoc:
delimiter: .
suffixes:
- pandoc
- pdc
text/plain:
delimiter: .
suffixes:
- txt
text/rst:
delimiter: .
suffixes:
- rst
text/tsx:
delimiter: .
suffixes:
- tsx
text/typescript:
delimiter: .
suffixes:
- ts
text/x-gotmpl:
delimiter: .
suffixes:
- gotmpl
text/x-sass:
delimiter: .
suffixes:
- sass
text/x-scss:
delimiter: .
suffixes:
- scss
video/3gpp:
delimiter: .
suffixes:
- 3gpp
- 3gp
video/mp4:
delimiter: .
suffixes:
- mp4
video/mpeg:
delimiter: .
suffixes:
- mpg
- mpeg
video/ogg:
delimiter: .
suffixes:
- ogv
video/webm:
delimiter: .
suffixes:
- webm
video/x-msvideo:
delimiter: .
suffixes:
- avi
[mediaTypes]
[mediaTypes.'application/json']
delimiter = '.'
suffixes = ['json']
[mediaTypes.'application/manifest+json']
delimiter = '.'
suffixes = ['webmanifest']
[mediaTypes.'application/octet-stream']
delimiter = '.'
[mediaTypes.'application/pdf']
delimiter = '.'
suffixes = ['pdf']
[mediaTypes.'application/rss+xml']
delimiter = '.'
suffixes = ['xml', 'rss']
[mediaTypes.'application/toml']
delimiter = '.'
suffixes = ['toml']
[mediaTypes.'application/wasm']
delimiter = '.'
suffixes = ['wasm']
[mediaTypes.'application/xml']
delimiter = '.'
suffixes = ['xml']
[mediaTypes.'application/yaml']
delimiter = '.'
suffixes = ['yaml', 'yml']
[mediaTypes.'font/otf']
delimiter = '.'
suffixes = ['otf']
[mediaTypes.'font/ttf']
delimiter = '.'
suffixes = ['ttf']
[mediaTypes.'image/bmp']
delimiter = '.'
suffixes = ['bmp']
[mediaTypes.'image/gif']
delimiter = '.'
suffixes = ['gif']
[mediaTypes.'image/jpeg']
delimiter = '.'
suffixes = ['jpg', 'jpeg', 'jpe', 'jif', 'jfif']
[mediaTypes.'image/png']
delimiter = '.'
suffixes = ['png']
[mediaTypes.'image/svg+xml']
delimiter = '.'
suffixes = ['svg']
[mediaTypes.'image/tiff']
delimiter = '.'
suffixes = ['tif', 'tiff']
[mediaTypes.'image/webp']
delimiter = '.'
suffixes = ['webp']
[mediaTypes.'text/asciidoc']
delimiter = '.'
suffixes = ['adoc', 'asciidoc', 'ad']
[mediaTypes.'text/calendar']
delimiter = '.'
suffixes = ['ics']
[mediaTypes.'text/css']
delimiter = '.'
suffixes = ['css']
[mediaTypes.'text/csv']
delimiter = '.'
suffixes = ['csv']
[mediaTypes.'text/html']
delimiter = '.'
suffixes = ['html', 'htm']
[mediaTypes.'text/javascript']
delimiter = '.'
suffixes = ['js', 'jsm', 'mjs']
[mediaTypes.'text/jsx']
delimiter = '.'
suffixes = ['jsx']
[mediaTypes.'text/markdown']
delimiter = '.'
suffixes = ['md', 'mdown', 'markdown']
[mediaTypes.'text/org']
delimiter = '.'
suffixes = ['org']
[mediaTypes.'text/pandoc']
delimiter = '.'
suffixes = ['pandoc', 'pdc']
[mediaTypes.'text/plain']
delimiter = '.'
suffixes = ['txt']
[mediaTypes.'text/rst']
delimiter = '.'
suffixes = ['rst']
[mediaTypes.'text/tsx']
delimiter = '.'
suffixes = ['tsx']
[mediaTypes.'text/typescript']
delimiter = '.'
suffixes = ['ts']
[mediaTypes.'text/x-gotmpl']
delimiter = '.'
suffixes = ['gotmpl']
[mediaTypes.'text/x-sass']
delimiter = '.'
suffixes = ['sass']
[mediaTypes.'text/x-scss']
delimiter = '.'
suffixes = ['scss']
[mediaTypes.'video/3gpp']
delimiter = '.'
suffixes = ['3gpp', '3gp']
[mediaTypes.'video/mp4']
delimiter = '.'
suffixes = ['mp4']
[mediaTypes.'video/mpeg']
delimiter = '.'
suffixes = ['mpg', 'mpeg']
[mediaTypes.'video/ogg']
delimiter = '.'
suffixes = ['ogv']
[mediaTypes.'video/webm']
delimiter = '.'
suffixes = ['webm']
[mediaTypes.'video/x-msvideo']
delimiter = '.'
suffixes = ['avi']
{
"mediaTypes": {
"application/json": {
"delimiter": ".",
"suffixes": [
"json"
]
},
"application/manifest+json": {
"delimiter": ".",
"suffixes": [
"webmanifest"
]
},
"application/octet-stream": {
"delimiter": "."
},
"application/pdf": {
"delimiter": ".",
"suffixes": [
"pdf"
]
},
"application/rss+xml": {
"delimiter": ".",
"suffixes": [
"xml",
"rss"
]
},
"application/toml": {
"delimiter": ".",
"suffixes": [
"toml"
]
},
"application/wasm": {
"delimiter": ".",
"suffixes": [
"wasm"
]
},
"application/xml": {
"delimiter": ".",
"suffixes": [
"xml"
]
},
"application/yaml": {
"delimiter": ".",
"suffixes": [
"yaml",
"yml"
]
},
"font/otf": {
"delimiter": ".",
"suffixes": [
"otf"
]
},
"font/ttf": {
"delimiter": ".",
"suffixes": [
"ttf"
]
},
"image/bmp": {
"delimiter": ".",
"suffixes": [
"bmp"
]
},
"image/gif": {
"delimiter": ".",
"suffixes": [
"gif"
]
},
"image/jpeg": {
"delimiter": ".",
"suffixes": [
"jpg",
"jpeg",
"jpe",
"jif",
"jfif"
]
},
"image/png": {
"delimiter": ".",
"suffixes": [
"png"
]
},
"image/svg+xml": {
"delimiter": ".",
"suffixes": [
"svg"
]
},
"image/tiff": {
"delimiter": ".",
"suffixes": [
"tif",
"tiff"
]
},
"image/webp": {
"delimiter": ".",
"suffixes": [
"webp"
]
},
"text/asciidoc": {
"delimiter": ".",
"suffixes": [
"adoc",
"asciidoc",
"ad"
]
},
"text/calendar": {
"delimiter": ".",
"suffixes": [
"ics"
]
},
"text/css": {
"delimiter": ".",
"suffixes": [
"css"
]
},
"text/csv": {
"delimiter": ".",
"suffixes": [
"csv"
]
},
"text/html": {
"delimiter": ".",
"suffixes": [
"html",
"htm"
]
},
"text/javascript": {
"delimiter": ".",
"suffixes": [
"js",
"jsm",
"mjs"
]
},
"text/jsx": {
"delimiter": ".",
"suffixes": [
"jsx"
]
},
"text/markdown": {
"delimiter": ".",
"suffixes": [
"md",
"mdown",
"markdown"
]
},
"text/org": {
"delimiter": ".",
"suffixes": [
"org"
]
},
"text/pandoc": {
"delimiter": ".",
"suffixes": [
"pandoc",
"pdc"
]
},
"text/plain": {
"delimiter": ".",
"suffixes": [
"txt"
]
},
"text/rst": {
"delimiter": ".",
"suffixes": [
"rst"
]
},
"text/tsx": {
"delimiter": ".",
"suffixes": [
"tsx"
]
},
"text/typescript": {
"delimiter": ".",
"suffixes": [
"ts"
]
},
"text/x-gotmpl": {
"delimiter": ".",
"suffixes": [
"gotmpl"
]
},
"text/x-sass": {
"delimiter": ".",
"suffixes": [
"sass"
]
},
"text/x-scss": {
"delimiter": ".",
"suffixes": [
"scss"
]
},
"video/3gpp": {
"delimiter": ".",
"suffixes": [
"3gpp",
"3gp"
]
},
"video/mp4": {
"delimiter": ".",
"suffixes": [
"mp4"
]
},
"video/mpeg": {
"delimiter": ".",
"suffixes": [
"mpg",
"mpeg"
]
},
"video/ogg": {
"delimiter": ".",
"suffixes": [
"ogv"
]
},
"video/webm": {
"delimiter": ".",
"suffixes": [
"webm"
]
},
"video/x-msvideo": {
"delimiter": ".",
"suffixes": [
"avi"
]
}
}
}
- delimiter
- (
string) 文件名和后缀之间的分隔符。分隔符与后缀一起构成文件扩展名。默认值是"."。 - suffixes
- (
[]string) 与此媒体类型关联的后缀。第一个后缀是主后缀。
修改媒体类型
您可以修改任何默认媒体类型。例如,要将 text/html 的主后缀从 html 切换到 htm:
mediaTypes:
text/html:
suffixes:
- htm
- html
[mediaTypes]
[mediaTypes.'text/html']
suffixes = ['htm', 'html']
{
"mediaTypes": {
"text/html": {
"suffixes": [
"htm",
"html"
]
}
}
}
如果您更改了默认媒体类型,则还必须显式重新定义使用该媒体类型的所有输出格式。例如,要确保上述更改影响 html 输出格式,请重新定义 html 输出格式:
outputFormats:
html:
mediaType: text/html
[outputFormats]
[outputFormats.html]
mediaType = 'text/html'
{
"outputFormats": {
"html": {
"mediaType": "text/html"
}
}
}
创建媒体类型
您可以根据需要创建新的媒体类型。例如,为 Atom 源创建媒体类型:
mediaTypes:
application/atom+xml:
suffixes:
- atom
[mediaTypes]
[mediaTypes.'application/atom+xml']
suffixes = ['atom']
{
"mediaTypes": {
"application/atom+xml": {
"suffixes": [
"atom"
]
}
}
}
没有后缀的媒体类型
有时,您可能需要创建没有后缀或分隔符的媒体类型。例如,Netlify 识别名为 _redirects 和 _headers 的配置文件,Hugo 可以使用自定义 输出格式 生成这些文件。
要支持这些自定义输出格式,请注册没有后缀或分隔符的自定义媒体类型:
mediaTypes:
text/netlify:
delimiter: ''
[mediaTypes]
[mediaTypes.'text/netlify']
delimiter = ''
{
"mediaTypes": {
"text/netlify": {
"delimiter": ""
}
}
}
自定义输出格式定义如下所示:
outputFormats:
headers:
baseName: _headers
isPlainText: true
mediatype: text/netlify
notAlternative: true
redir:
baseName: _redirects
isPlainText: true
mediatype: text/netlify
[outputFormats]
[outputFormats.headers]
baseName = '_headers'
isPlainText = true
mediatype = 'text/netlify'
notAlternative = true
[outputFormats.redir]
baseName = '_redirects'
isPlainText = true
mediatype = 'text/netlify'
{
"outputFormats": {
"headers": {
"baseName": "_headers",
"isPlainText": true,
"mediatype": "text/netlify",
"notAlternative": true
},
"redir": {
"baseName": "_redirects",
"isPlainText": true,
"mediatype": "text/netlify"
}
}
}