HUGO
Menu
GitHub 87548 stars Mastodon

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"
      }
   }
}

Last updated: January 1, 0001
Improve this page