确保 Hugo
已经 加入 PATH
环境变量.
$ hugo help
Hugo is a Fast and Flexible Static Site Generator built with love by spf13 and friends in Go.
Complete documentation is available at http://gohugo.io
Usage:
hugo [flags]
hugo [command]
Available Commands:
server Hugo runs its own webserver to render the files
version Print the version number of Hugo
config Print the site configuration
check Check content in the source directory
benchmark Benchmark hugo by building a site a number of times
new Create new content for your site
undraft Undraft changes the content's draft status from 'True' to 'False'
genautocomplete Generate shell autocompletion script for Hugo
gendoc Generate Markdown documentation for the Hugo CLI.
help Help about any command
Flags:
-b, --baseURL="": hostname (and path) to the root, e.g. http://spf13.com/
-D, --buildDrafts=false: include content marked as draft
-F, --buildFuture=false: include content with publishdate in the future
--cacheDir="": filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
--config="": config file (default is path/config.yaml|json|toml)
-d, --destination="": filesystem path to write files to
--disableRSS=false: Do not build RSS files
--disableSitemap=false: Do not build Sitemap file
--editor="": edit new content with this editor, if provided
-h, --help=false: help for hugo
--ignoreCache=false: Ignores the cache directory for reading but still writes to it
--log=false: Enable Logging
--logFile="": Log File path (if set, logging enabled automatically)
--noTimes=false: Don't sync modification time of files
--pluralizeListTitles=true: Pluralize titles in lists using inflect
-s, --source="": filesystem path to read files relative from
--stepAnalysis=false: display memory and timing of different steps of the program
-t, --theme="": theme to use (located in /themes/THEMENAME/)
--uglyURLs=false: if true, use /filename.html instead of /filename/
-v, --verbose=false: verbose output
--verboseLog=false: verbose logging
-w, --watch=false: watch filesystem for changes and recreate as needed
Additional help topics:
hugo convert Convert will modify your content to different formats hugo list Listing out various types of content
Use "hugo help [command]" for more information about a command.
简单的例子
最常见的例子应该是在你当前的项目目录下运行 hugo
:
$ hugo
0 draft content
0 future content
99 pages created
0 paginator pages created
16 tags created
0 groups created
in 120 ms
这将生成网站到 public/
目录下, 即可部署到服务器.
在开发网站的时候快速响应
当你在开发的时候, Hugo 会监听文件变化, 快速重构出新的网站.
$ hugo -s ~/Code/hugo/docs
0 draft content
0 future content
99 pages created
0 paginator pages created
16 tags created
0 groups created
in 120 ms
Watching for changes in /Users/spf13/Code/hugo/docs/content
Press Ctrl+C to stop
Hugo 同时可以启动一个 web 服务实时预览. Hugo 实现了 LiveReload 技术来自动刷新在支持 javascript
的浏览器中打开的页面.
这是非常容易并且十分通用的开发 Hugo 网站的方式.
$ hugo server -ws ~/Code/hugo/docs
0 draft content
0 future content
99 pages created
0 paginator pages created
16 tags created
0 groups created
in 120 ms
Watching for changes in /Users/spf13/Code/hugo/docs/content
Serving pages from /Users/spf13/Code/hugo/docs/public
Web Server is available at http://localhost:1313/
Press Ctrl+C to stop
部署你的网站
在本地使用 hugo server
完成网站开发后, 你需要运行 hugo
来重建你的网站. 然后你可以通过拷贝 publick/
目录来部署你的网站(使用 FTP, SFTP, webDAV, Rsync, git push 等等)
因为 Hugo 生成的是静态文件, 你的可以在任何地方部署到任何站点, Heroku, GoDaddy, DreamHost, GitHub Pages, Amazon S3 和 CloudFront, 以及任何便宜和免费的静态服务站点.
Apache, nginx, IIS… 任何web 服务软件都可以支持.
部署注意事项
运行 hugo
不会删除之前生成的文件. 也就是说你需要在运行 hugo
命令之前手动删除 public/
目录(或者你通过 -d/--destination
手动指定的目录), 否则有问题的文件(比如 草稿或者之后的帖子)可能会生成到站点里.
一个简单的解决方法是为开发环境和生产环境指定不同的目录.
在启动服务构建草稿内容(有利于编辑)的时候, 你可以指定不同的地址, 比如 dev/
目录.
$ hugo server -wDs ~/Code/hugo/docs -d dev
当内容可以发布的时候, 使用 publick/
目录:
$ hugo -s ~/Code/hugo/docs
这将有效地避免发布还没准备发布的内容.
另一种选择, 使用 Hugo 的 web 服务!
没错, Hugo 在构建网站和提供 web 服务都快如闪电 (感谢 支持高并发和多线程设计的 Go 特性), 一些用户更喜欢在生产环境中使用 Hugo 自身的 web服务!
所以其他 web 服务(Apache, nginx, IIS…)就不是那么必要了.
命令如下:
$ hugo server --baseURL=http://yoursite.org/ \
--port=80 \
--appendPort=false \
--bind=87.245.198.50
注意 bind
选项, 这是你服务器的 ip 地址(默认的为大部分开发着使用的 127.0.0.1
). 但是某些主机, 比如 Amazon 的服务器的 ip 地址是转化来的甚至有时候不能确定真正的 ip 地址. 使用 --bind=0.0.0.0
将会绑定所有的接口.
使用 Hugo 的做生产环境的服务, 你只需要发布源文件, Hugo 在服务器上将飞速地构建你的网站并提供 web 服务.
如果你不在你的网页中加入 提供 LiveReload 服务的 Javascript 代码.你可以使用 --disableLiveReload=true
选项.
感兴趣吗? 这有一些 Hugo 用户提供的非常棒的教程:
- hugo, syncthing (French) by Frédéric Logier (@fredix)
Last revision: December 23, 2015
Hugo v0.15 documentation