跳到主要内容
  1. Skills/
  2. Hugo 使用指南/

如何设置与获取hguo environment

·字数 681·2 分钟
howto

nodejsprocess.env 一样,hugo 与提供了类似的变量。这个变量在你用 hugo 来生成不同环境的网页版本时,非常有用。

常见的应用场景 #

在模板中区分环境 #

比如仅是为了在本地开发 hugo 模板或编写文章内容想看看效果,但并不想这个效果现在就发布,那么此时在模板中可以这样写:

{{ if eq (hugo.Environment "production" )}}
<div> 当时是生产模式 </div>
{{ else }}
<div> 当前是开发模式 </div>
{{ end }}

区分配置文件 #

当然,还可以用来区分配置文件。比如本站的正常的互联网上访问 url 地址是 https://youwu.today。但在本地开发模板或者编写文章里,并没有需要使用到这个域名,通常是使用本机名称或者 localhost 来替代。那么为了可以在 hugo 自动识别,这时你的配置文件可以这样组织。

config.toml
config
├── _default
│        ├── config.toml
│        ├── languages.toml
│        ├── menus.yaml
│        └── params.toml
└── production
    └── config.toml

其中 baseURL 变量在 config.toml 中为:

...
baseURL = "/"
...

config/production/config.toml 中为:

baseURL = "https://youwu.today"

根据 hugo 中模板的读取规则,按照优先级从高到低排列为:

  • 对应环境的配置。若此时 hugo.Environment 为 production 时,那么 config/production/config.toml 中的配置将起作用
  • config/_default
  • config.toml

那么在 hugo 渲染模板时,若遇到诸如 {{ page.Permalink }}{{ print "skill/hugo/" | absURL }} 时,发布时的版本前缀均为 https://youwu.today

如何设定 hugo.Environment 的值 #

hugo.Environment 的值可以通过以下这些方式来设定。

在命令行启动时指定 #

作为 hugo 启动命令的参数,一般开发时使用命令 hugo server 来启动 dev 模式的 hugo 服务。但是可以使用参数 --environment production 来强制指定 environment 的值。

默认值 #

在命令行不指定 --environment 时,hugo.Environment 的值大致有这些情况:

  • hugo server 启动的, hugo.Environmentdevelopment
  • hugo 启动生成整站静态网页的,hugo.Environmentproduction

需要注意一个细节,当使用 hugo -w 启动生成静态网页并监控变化持续生成时,此时的 hugo.Environmentdevelopment,而不是 production