usage.md (10033B)
1 ---
2 title: Basic Usage
3 linktitle: Basic Usage
4 description: Hugo's CLI is fully featured but simple to use, even for those who have very limited experience working from the command line.
5 date: 2017-02-01
6 publishdate: 2017-02-01
7 lastmod: 2017-02-01
8 categories: [getting started]
9 keywords: [usage,livereload,command line,flags]
10 menu:
11 docs:
12 parent: "getting-started"
13 weight: 40
14 weight: 40
15 sections_weight: 40
16 draft: false
17 aliases: [/overview/usage/,/extras/livereload/,/doc/usage/,/usage/]
18 toc: true
19 ---
20
21 The following is a description of the most common commands you will use while developing your Hugo project. See the [Command Line Reference][commands] for a comprehensive view of Hugo's CLI.
22
23 ## Test Installation
24
25 Once you have [installed Hugo][install], make sure it is in your `PATH`. You can test that Hugo has been installed correctly via the `help` command:
26
27 ```
28 hugo help
29 ```
30
31 The output you see in your console should be similar to the following:
32
33 ```
34 hugo is the main command, used to build your Hugo site.
35
36 Hugo is a Fast and Flexible Static Site Generator
37 built with love by spf13 and friends in Go.
38
39 Complete documentation is available at https://gohugo.io/.
40
41 Usage:
42 hugo [flags]
43 hugo [command]
44
45 Available Commands:
46 completion Generate the autocompletion script for the specified shell
47 config Print the site configuration
48 convert Convert your content to different formats
49 deploy Deploy your site to a Cloud provider.
50 env Print Hugo version and environment info
51 gen A collection of several useful generators.
52 help Help about any command
53 import Import your site from others.
54 list Listing out various types of content
55 mod Various Hugo Modules helpers.
56 new Create new content for your site
57 server A high performance webserver
58 version Print the version number of Hugo
59
60 Flags:
61 -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
62 -D, --buildDrafts include content marked as draft
63 -E, --buildExpired include expired content
64 -F, --buildFuture include content with publishdate in the future
65 --cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
66 --cleanDestinationDir remove files from destination not found in static directories
67 --config string config file (default is path/config.yaml|json|toml)
68 --configDir string config dir (default "config")
69 -c, --contentDir string filesystem path to content directory
70 --debug debug output
71 -d, --destination string filesystem path to write files to
72 --disableKinds strings disable different kind of pages (home, RSS etc.)
73 --enableGitInfo add Git revision, date, author, and CODEOWNERS info to the pages
74 -e, --environment string build environment
75 --forceSyncStatic copy all files when static is changed.
76 --gc enable to run some cleanup tasks (remove unused cache files) after the build
77 -h, --help help for hugo
78 --ignoreCache ignores the cache directory
79 --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern
80 -l, --layoutDir string filesystem path to layout directory
81 --log enable Logging
82 --logFile string log File path (if set, logging enabled automatically)
83 --minify minify any supported output format (HTML, XML etc.)
84 --noChmod don't sync permission mode of files
85 --noTimes don't sync modification time of files
86 --panicOnWarning panic on first WARNING log
87 --poll string set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes
88 --printI18nWarnings print missing translations
89 --printMemoryUsage print memory usage to screen at intervals
90 --printPathWarnings print warnings on duplicate target paths etc.
91 --printUnusedTemplates print warnings on unused templates.
92 --quiet build in quiet mode
93 --renderToMemory render to memory (only useful for benchmark testing)
94 -s, --source string filesystem path to read files relative from
95 --templateMetrics display metrics about template executions
96 --templateMetricsHints calculate some improvement hints when combined with --templateMetrics
97 -t, --theme strings themes to use (located in /themes/THEMENAME/)
98 --themesDir string filesystem path to themes directory
99 --trace file write trace to file (not useful in general)
100 -v, --verbose verbose output
101 --verboseLog verbose logging
102 -w, --watch watch filesystem for changes and recreate as needed
103
104 Use "hugo [command] --help" for more information about a command.
105 ```
106
107 ## The `hugo` Command
108
109 The most common usage is probably to run `hugo` with your current directory being the input directory.
110
111 This generates your website to the `public/` directory by default, although you can customize the output directory in your [site configuration][config] by changing the `publishDir` field.
112
113 The command `hugo` renders your site into `public/` dir and is ready to be deployed to your web server:
114
115 ```
116 hugo
117 0 draft content
118 0 future content
119 99 pages created
120 0 paginator pages created
121 16 tags created
122 0 groups created
123 in 90 ms
124 ```
125
126 ## Draft, Future, and Expired Content
127
128 Hugo allows you to set `draft`, `publishdate`, and even `expirydate` in your content's [front matter][]. By default, Hugo will not publish:
129
130 1. Content with a future `publishdate` value
131 2. Content with `draft: true` status
132 3. Content with a past `expirydate` value
133
134 All three of these can be overridden during both local development *and* deployment by adding the following flags to `hugo` and `hugo server`, respectively, or by changing the boolean values assigned to the fields of the same name (without `--`) in your [configuration][config]:
135
136 1. `--buildFuture`
137 2. `--buildDrafts`
138 3. `--buildExpired`
139
140 ## LiveReload
141
142 Hugo comes with [LiveReload](https://github.com/livereload/livereload-js) built in. There are no additional packages to install. A common way to use Hugo while developing a site is to have Hugo run a server with the `hugo server` command and watch for changes:
143
144 ```
145 hugo server
146 0 draft content
147 0 future content
148 99 pages created
149 0 paginator pages created
150 16 tags created
151 0 groups created
152 in 120 ms
153 Watching for changes in /Users/yourname/sites/yourhugosite/{data,content,layouts,static}
154 Serving pages from /Users/yourname/sites/yourhugosite/public
155 Web Server is available at http://localhost:1313/
156 Press Ctrl+C to stop
157 ```
158
159 This will run a fully functioning web server while simultaneously watching your file system for additions, deletions, or changes within the following areas of your [project organization][dirs]:
160
161 * `/static/*`
162 * `/content/*`
163 * `/data/*`
164 * `/i18n/*`
165 * `/layouts/*`
166 * `/themes/<CURRENT-THEME>/*`
167 * `config`
168
169 Whenever you make changes, Hugo will simultaneously rebuild the site and continue to serve content. As soon as the build is finished, LiveReload tells the browser to silently reload the page.
170
171 Most Hugo builds are so fast that you may not notice the change unless looking directly at the site in your browser. This means that keeping the site open on a second monitor (or another half of your current monitor) allows you to see the most up-to-date version of your website without the need to leave your text editor.
172
173 {{% note "Closing `</body>` Tag"%}}
174 Hugo injects the LiveReload `<script>` before the closing `</body>` in your templates and will therefore not work if this tag is not present..
175 {{% /note %}}
176
177 ### Redirect automatically to the page you just saved
178
179 When you are working with more than one document and want to see the markup as real-time as possible it's not ideal to keep jumping between them.
180 Fortunately Hugo has an easy, embedded and simple solution for this. It's the flag `--navigateToChanged`.
181
182 ### Disable LiveReload
183
184 LiveReload works by injecting JavaScript into the pages Hugo generates. The script creates a connection from the browser's web socket client to the Hugo web socket server.
185
186 The following methods make it easy to disable LiveReload:
187
188 ```
189 hugo server --watch=false
190 ```
191
192 Or...
193
194 ```
195 hugo server --disableLiveReload
196 ```
197
198 The latter flag can be omitted by adding the following:
199
200 {{< code-toggle file="config" >}}
201 disableLiveReload = true
202 {{< /code-toggle >}}
203
204 ## Deploy Your Website
205
206 After running `hugo server` for local web development, you need to do a final `hugo` run *without the `server` part of the command* to rebuild your site. You may then deploy your site by copying the `public/` directory to your production web server.
207
208 Since Hugo generates a static website, your site can be hosted *anywhere* using any web server. See [Hosting and Deployment][hosting] for methods for hosting and automating deployments contributed by the Hugo community.
209
210 {{% warning "Generated Files are **NOT** Removed on Site Build" %}}
211 Running `hugo` *does not* remove generated files before building. This means that you should delete your `public/` directory (or the publish directory you specified via flag or configuration file) before running the `hugo` command. If you do not remove these files, you run the risk of the wrong files (e.g., drafts or future posts) being left in the generated site.
212 {{% /warning %}}
213
214
215 [commands]: /commands/
216 [config]: /getting-started/configuration/
217 [dirs]: /getting-started/directory-structure/
218 [front matter]: /content-management/front-matter/
219 [hosting]: /hosting-and-deployment/
220 [install]: /getting-started/installing/