hugo/content/en/getting-started/directory-structure.md

98 lines
4.9 KiB
Markdown
Raw Normal View History

---
title: Directory Structure
linktitle: Directory Structure
description: Hugo's CLI scaffolds a project directory structure and then takes that single directory and uses it as the input to create a complete website.
date: 2017-01-02
publishdate: 2017-02-01
lastmod: 2017-03-09
categories: [getting started,fundamentals]
keywords: [source, organization, directories]
menu:
docs:
parent: "getting-started"
weight: 50
weight: 50
sections_weight: 50
draft: false
aliases: [/overview/source-directory/]
toc: true
---
## New Site Scaffolding
{{< youtube sB0HLHjgQ7E >}}
Running the `hugo new site` generator from the command line will create a directory structure with the following elements:
```
.
├── archetypes
├── config.toml
├── content
├── data
├── layouts
Squashed 'docs/' changes from e5aa641a6..392668f4f 392668f4f Update theme 65d82c845 fix versions in GitHub Pages docs (#1815) 4e078a306 Create hosting-on-azure-static-web-apps.md (#1738) e24e25052 fix requirement typo (#1814) 0790eb173 fix broken link (#1813) f4a1b38c7 📄 Add more clarity on merging of config files (#1493) 2e82efff0 Install on Windows: Correct + augment (#1520) 4bffd076e Update frontends to add CloudCannon's CMS (#1509) 17eea3133 Update index.md to add resource (#1508) 5a5ac1d2f Add documentation for babel sourceMap (#1492) 899b7117c Update menu-templates.md 284dc4266 Include flexible translation in i18n.md f03421274 docs: Escaping Hugo/GO template code 4f0755683 Improve the documentation of imageConfig and the image resource 89aa723cc Clarify leaf bundle explanation and related FAQ 0c6b32bb9 Update starter-kits.md a68151b1b Update starter-kits.md 91b145384 Update starter-kits.md c8104b422 Update hosting-on-21yunbox.md 51ee7603b Update hosting-on-21yunbox.md d88314499 docs(en): add hosting on 21YunBox aab04f269 Update shortcode-templates.md to correct an error. ed48563aa Misc improvements 87dd24e1d Fix merge failure 0bcc6dca8 js.Build: Update docs to not allow boolean inputs for sourceMap e50a28fbc js.Build: Add SourceMap flag into js.Build opts which can turn on sourcemap 9695093a1 Fix Arch Linux installation command 3de773d7a Please remove hugo-elasticsearch plugin. 6510f0a5a release: Add some more ignore expressions to release notes config dc90b7517 typoe > typo (!) 3427c7436 Add hugoreleaser config 5a1f2d0dd Improves formatting of resources, assets sections (#1804) 03ba56fdd Remove Flesland Flis from Showcases 9f61dac7a Update slice.md 533e4e0cd Update theme 85e50325c Simplify writing 9b30e81b9 Typo fix and remove passive form 8974b6c53 dynamic-menu-configuration 1c5467329 netlify: Hugo 0.102.3 610a937b0 Remove Over from Showcase 99f5585bc netlify: Hugo v0.102.2 9f230ac1f netlify: Hugo v0.102.1 a6fc3f864 netlify: Bump to Hugo v0.102.0 3e9bc1a62 Merge branch 'tempv0.102.0' c08d6d898 Update en/templates/404.md with Firebase Hosting (#1796) 322b75f40 Update configuration.md 2fa6f0b94 404 template example: remove slash relURL arg 1195f168a Remove broken link (#1767) e0838e574 Update RenderString.md bee6adf71 Update page-resources.md 24e142f22 Remove duplicate word from cascade description 879fc3983 docs: Update the description of PostCSS config 2ffe539e3 fix: Use `=` instead of `:=` for variable reassignments (#1771) 7496b8f87 update 404 error for digitalocean docs c85caca4a Merge commit 'bdf935d66c1f02dfc942a30e9fc00519bba3aacb' c3888b63a docs: Regen docshelper 8a5942555 Merge commit '475f87f685439de0f907a9ffc29bfd1361eb1c59' 282007217 common: Add hugo.GoVersion 00b4b46da resources/page: Add :slugorfilename attribute git-subtree-dir: docs git-subtree-split: 392668f4f488d184b08b227028b01dbc02abd57a
2022-09-13 14:34:24 -04:00
├── public
├── static
└── themes
```
## Directory Structure Explained
The following is a high-level overview of each of the directories with links to each of their respective sections within the Hugo docs.
[`archetypes`](/content-management/archetypes/)
: You can create new content files in Hugo using the `hugo new` command.
By default, Hugo will create new content files with at least `date`, `title` (inferred from the file name), and `draft = true`. This saves time and promotes consistency for sites using multiple content types. You can create your own [archetypes][] with custom preconfigured front matter fields as well.
[`assets`][]
Squashed 'docs/' changes from e5aa641a6..392668f4f 392668f4f Update theme 65d82c845 fix versions in GitHub Pages docs (#1815) 4e078a306 Create hosting-on-azure-static-web-apps.md (#1738) e24e25052 fix requirement typo (#1814) 0790eb173 fix broken link (#1813) f4a1b38c7 📄 Add more clarity on merging of config files (#1493) 2e82efff0 Install on Windows: Correct + augment (#1520) 4bffd076e Update frontends to add CloudCannon's CMS (#1509) 17eea3133 Update index.md to add resource (#1508) 5a5ac1d2f Add documentation for babel sourceMap (#1492) 899b7117c Update menu-templates.md 284dc4266 Include flexible translation in i18n.md f03421274 docs: Escaping Hugo/GO template code 4f0755683 Improve the documentation of imageConfig and the image resource 89aa723cc Clarify leaf bundle explanation and related FAQ 0c6b32bb9 Update starter-kits.md a68151b1b Update starter-kits.md 91b145384 Update starter-kits.md c8104b422 Update hosting-on-21yunbox.md 51ee7603b Update hosting-on-21yunbox.md d88314499 docs(en): add hosting on 21YunBox aab04f269 Update shortcode-templates.md to correct an error. ed48563aa Misc improvements 87dd24e1d Fix merge failure 0bcc6dca8 js.Build: Update docs to not allow boolean inputs for sourceMap e50a28fbc js.Build: Add SourceMap flag into js.Build opts which can turn on sourcemap 9695093a1 Fix Arch Linux installation command 3de773d7a Please remove hugo-elasticsearch plugin. 6510f0a5a release: Add some more ignore expressions to release notes config dc90b7517 typoe > typo (!) 3427c7436 Add hugoreleaser config 5a1f2d0dd Improves formatting of resources, assets sections (#1804) 03ba56fdd Remove Flesland Flis from Showcases 9f61dac7a Update slice.md 533e4e0cd Update theme 85e50325c Simplify writing 9b30e81b9 Typo fix and remove passive form 8974b6c53 dynamic-menu-configuration 1c5467329 netlify: Hugo 0.102.3 610a937b0 Remove Over from Showcase 99f5585bc netlify: Hugo v0.102.2 9f230ac1f netlify: Hugo v0.102.1 a6fc3f864 netlify: Bump to Hugo v0.102.0 3e9bc1a62 Merge branch 'tempv0.102.0' c08d6d898 Update en/templates/404.md with Firebase Hosting (#1796) 322b75f40 Update configuration.md 2fa6f0b94 404 template example: remove slash relURL arg 1195f168a Remove broken link (#1767) e0838e574 Update RenderString.md bee6adf71 Update page-resources.md 24e142f22 Remove duplicate word from cascade description 879fc3983 docs: Update the description of PostCSS config 2ffe539e3 fix: Use `=` instead of `:=` for variable reassignments (#1771) 7496b8f87 update 404 error for digitalocean docs c85caca4a Merge commit 'bdf935d66c1f02dfc942a30e9fc00519bba3aacb' c3888b63a docs: Regen docshelper 8a5942555 Merge commit '475f87f685439de0f907a9ffc29bfd1361eb1c59' 282007217 common: Add hugo.GoVersion 00b4b46da resources/page: Add :slugorfilename attribute git-subtree-dir: docs git-subtree-split: 392668f4f488d184b08b227028b01dbc02abd57a
2022-09-13 14:34:24 -04:00
: Stores all the files which need be processed by [Hugo Pipes](/hugo-pipes/). Only the files whose `.Permalink` or `.RelPermalink` are used will be published to the `public` directory. Note: assets directory is not created by default.
[`config`](/getting-started/configuration/)
: Hugo ships with a large number of [configuration directives][].
The [config directory](/getting-started/configuration/#configuration-directory) is where those directives are stored as JSON, YAML, or TOML files. Every root setting object can stand as its own file and structured by environments.
Projects with minimal settings and no need for environment awareness can use a single `config.toml` file at its root.
Many sites may need little to no configuration, but Hugo ships with a large number of [configuration directives][] for more granular directions on how you want Hugo to build your website. Note: config directory is not created by default.
[`content`][]
: All content for your website will live inside this directory. Each top-level folder in Hugo is considered a [content section][]. For example, if your site has three main sections---`blog`, `articles`, and `tutorials`---you will have three directories at `content/blog`, `content/articles`, and `content/tutorials`. Hugo uses sections to assign default [content types][].
[`data`](/templates/data-templates/)
: This directory is used to store configuration files that can be
used by Hugo when generating your website. You can write these files in YAML, JSON, or TOML format. In addition to the files you add to this folder, you can also create [data templates][] that pull from dynamic content.
[`layouts`][]
: Stores templates in the form of `.html` files that specify how views of your content will be rendered into a static website. Templates include [list pages][lists], your [homepage][], [taxonomy templates][], [partials][], [single page templates][singles], and more.
[`static`][]
: Stores all the static content: images, CSS, JavaScript, etc. When Hugo builds your site, all assets inside your static directory are copied over as-is. A good example of using the `static` folder is for [verifying site ownership on Google Search Console][searchconsole], where you want Hugo to copy over a complete HTML file without modifying its content.
{{% note %}}
From **Hugo 0.31** you can have multiple static directories.
{{% /note %}}
Squashed 'docs/' changes from e5aa641a6..392668f4f 392668f4f Update theme 65d82c845 fix versions in GitHub Pages docs (#1815) 4e078a306 Create hosting-on-azure-static-web-apps.md (#1738) e24e25052 fix requirement typo (#1814) 0790eb173 fix broken link (#1813) f4a1b38c7 📄 Add more clarity on merging of config files (#1493) 2e82efff0 Install on Windows: Correct + augment (#1520) 4bffd076e Update frontends to add CloudCannon's CMS (#1509) 17eea3133 Update index.md to add resource (#1508) 5a5ac1d2f Add documentation for babel sourceMap (#1492) 899b7117c Update menu-templates.md 284dc4266 Include flexible translation in i18n.md f03421274 docs: Escaping Hugo/GO template code 4f0755683 Improve the documentation of imageConfig and the image resource 89aa723cc Clarify leaf bundle explanation and related FAQ 0c6b32bb9 Update starter-kits.md a68151b1b Update starter-kits.md 91b145384 Update starter-kits.md c8104b422 Update hosting-on-21yunbox.md 51ee7603b Update hosting-on-21yunbox.md d88314499 docs(en): add hosting on 21YunBox aab04f269 Update shortcode-templates.md to correct an error. ed48563aa Misc improvements 87dd24e1d Fix merge failure 0bcc6dca8 js.Build: Update docs to not allow boolean inputs for sourceMap e50a28fbc js.Build: Add SourceMap flag into js.Build opts which can turn on sourcemap 9695093a1 Fix Arch Linux installation command 3de773d7a Please remove hugo-elasticsearch plugin. 6510f0a5a release: Add some more ignore expressions to release notes config dc90b7517 typoe > typo (!) 3427c7436 Add hugoreleaser config 5a1f2d0dd Improves formatting of resources, assets sections (#1804) 03ba56fdd Remove Flesland Flis from Showcases 9f61dac7a Update slice.md 533e4e0cd Update theme 85e50325c Simplify writing 9b30e81b9 Typo fix and remove passive form 8974b6c53 dynamic-menu-configuration 1c5467329 netlify: Hugo 0.102.3 610a937b0 Remove Over from Showcase 99f5585bc netlify: Hugo v0.102.2 9f230ac1f netlify: Hugo v0.102.1 a6fc3f864 netlify: Bump to Hugo v0.102.0 3e9bc1a62 Merge branch 'tempv0.102.0' c08d6d898 Update en/templates/404.md with Firebase Hosting (#1796) 322b75f40 Update configuration.md 2fa6f0b94 404 template example: remove slash relURL arg 1195f168a Remove broken link (#1767) e0838e574 Update RenderString.md bee6adf71 Update page-resources.md 24e142f22 Remove duplicate word from cascade description 879fc3983 docs: Update the description of PostCSS config 2ffe539e3 fix: Use `=` instead of `:=` for variable reassignments (#1771) 7496b8f87 update 404 error for digitalocean docs c85caca4a Merge commit 'bdf935d66c1f02dfc942a30e9fc00519bba3aacb' c3888b63a docs: Regen docshelper 8a5942555 Merge commit '475f87f685439de0f907a9ffc29bfd1361eb1c59' 282007217 common: Add hugo.GoVersion 00b4b46da resources/page: Add :slugorfilename attribute git-subtree-dir: docs git-subtree-split: 392668f4f488d184b08b227028b01dbc02abd57a
2022-09-13 14:34:24 -04:00
[`resources`][]
: Caches some files to speed up generation. Can be also used by template authors to distribute built SASS files, so you don't have to have the preprocessor installed. Note: resources directory is not created by default.
[archetypes]: /content-management/archetypes/
Squashed 'docs/' changes from e5aa641a6..392668f4f 392668f4f Update theme 65d82c845 fix versions in GitHub Pages docs (#1815) 4e078a306 Create hosting-on-azure-static-web-apps.md (#1738) e24e25052 fix requirement typo (#1814) 0790eb173 fix broken link (#1813) f4a1b38c7 📄 Add more clarity on merging of config files (#1493) 2e82efff0 Install on Windows: Correct + augment (#1520) 4bffd076e Update frontends to add CloudCannon's CMS (#1509) 17eea3133 Update index.md to add resource (#1508) 5a5ac1d2f Add documentation for babel sourceMap (#1492) 899b7117c Update menu-templates.md 284dc4266 Include flexible translation in i18n.md f03421274 docs: Escaping Hugo/GO template code 4f0755683 Improve the documentation of imageConfig and the image resource 89aa723cc Clarify leaf bundle explanation and related FAQ 0c6b32bb9 Update starter-kits.md a68151b1b Update starter-kits.md 91b145384 Update starter-kits.md c8104b422 Update hosting-on-21yunbox.md 51ee7603b Update hosting-on-21yunbox.md d88314499 docs(en): add hosting on 21YunBox aab04f269 Update shortcode-templates.md to correct an error. ed48563aa Misc improvements 87dd24e1d Fix merge failure 0bcc6dca8 js.Build: Update docs to not allow boolean inputs for sourceMap e50a28fbc js.Build: Add SourceMap flag into js.Build opts which can turn on sourcemap 9695093a1 Fix Arch Linux installation command 3de773d7a Please remove hugo-elasticsearch plugin. 6510f0a5a release: Add some more ignore expressions to release notes config dc90b7517 typoe > typo (!) 3427c7436 Add hugoreleaser config 5a1f2d0dd Improves formatting of resources, assets sections (#1804) 03ba56fdd Remove Flesland Flis from Showcases 9f61dac7a Update slice.md 533e4e0cd Update theme 85e50325c Simplify writing 9b30e81b9 Typo fix and remove passive form 8974b6c53 dynamic-menu-configuration 1c5467329 netlify: Hugo 0.102.3 610a937b0 Remove Over from Showcase 99f5585bc netlify: Hugo v0.102.2 9f230ac1f netlify: Hugo v0.102.1 a6fc3f864 netlify: Bump to Hugo v0.102.0 3e9bc1a62 Merge branch 'tempv0.102.0' c08d6d898 Update en/templates/404.md with Firebase Hosting (#1796) 322b75f40 Update configuration.md 2fa6f0b94 404 template example: remove slash relURL arg 1195f168a Remove broken link (#1767) e0838e574 Update RenderString.md bee6adf71 Update page-resources.md 24e142f22 Remove duplicate word from cascade description 879fc3983 docs: Update the description of PostCSS config 2ffe539e3 fix: Use `=` instead of `:=` for variable reassignments (#1771) 7496b8f87 update 404 error for digitalocean docs c85caca4a Merge commit 'bdf935d66c1f02dfc942a30e9fc00519bba3aacb' c3888b63a docs: Regen docshelper 8a5942555 Merge commit '475f87f685439de0f907a9ffc29bfd1361eb1c59' 282007217 common: Add hugo.GoVersion 00b4b46da resources/page: Add :slugorfilename attribute git-subtree-dir: docs git-subtree-split: 392668f4f488d184b08b227028b01dbc02abd57a
2022-09-13 14:34:24 -04:00
[`assets`]: /hugo-pipes/introduction#asset-directory/
[configuration directives]: /getting-started/configuration/#all-configuration-settings
[`content`]: /content-management/organization/
[content section]: /content-management/sections/
[content types]: /content-management/types/
[data templates]: /templates/data-templates/
[homepage]: /templates/homepage/
[`layouts`]: /templates/
[`static`]: /content-management/static-files/
Squashed 'docs/' changes from e5aa641a6..392668f4f 392668f4f Update theme 65d82c845 fix versions in GitHub Pages docs (#1815) 4e078a306 Create hosting-on-azure-static-web-apps.md (#1738) e24e25052 fix requirement typo (#1814) 0790eb173 fix broken link (#1813) f4a1b38c7 📄 Add more clarity on merging of config files (#1493) 2e82efff0 Install on Windows: Correct + augment (#1520) 4bffd076e Update frontends to add CloudCannon's CMS (#1509) 17eea3133 Update index.md to add resource (#1508) 5a5ac1d2f Add documentation for babel sourceMap (#1492) 899b7117c Update menu-templates.md 284dc4266 Include flexible translation in i18n.md f03421274 docs: Escaping Hugo/GO template code 4f0755683 Improve the documentation of imageConfig and the image resource 89aa723cc Clarify leaf bundle explanation and related FAQ 0c6b32bb9 Update starter-kits.md a68151b1b Update starter-kits.md 91b145384 Update starter-kits.md c8104b422 Update hosting-on-21yunbox.md 51ee7603b Update hosting-on-21yunbox.md d88314499 docs(en): add hosting on 21YunBox aab04f269 Update shortcode-templates.md to correct an error. ed48563aa Misc improvements 87dd24e1d Fix merge failure 0bcc6dca8 js.Build: Update docs to not allow boolean inputs for sourceMap e50a28fbc js.Build: Add SourceMap flag into js.Build opts which can turn on sourcemap 9695093a1 Fix Arch Linux installation command 3de773d7a Please remove hugo-elasticsearch plugin. 6510f0a5a release: Add some more ignore expressions to release notes config dc90b7517 typoe > typo (!) 3427c7436 Add hugoreleaser config 5a1f2d0dd Improves formatting of resources, assets sections (#1804) 03ba56fdd Remove Flesland Flis from Showcases 9f61dac7a Update slice.md 533e4e0cd Update theme 85e50325c Simplify writing 9b30e81b9 Typo fix and remove passive form 8974b6c53 dynamic-menu-configuration 1c5467329 netlify: Hugo 0.102.3 610a937b0 Remove Over from Showcase 99f5585bc netlify: Hugo v0.102.2 9f230ac1f netlify: Hugo v0.102.1 a6fc3f864 netlify: Bump to Hugo v0.102.0 3e9bc1a62 Merge branch 'tempv0.102.0' c08d6d898 Update en/templates/404.md with Firebase Hosting (#1796) 322b75f40 Update configuration.md 2fa6f0b94 404 template example: remove slash relURL arg 1195f168a Remove broken link (#1767) e0838e574 Update RenderString.md bee6adf71 Update page-resources.md 24e142f22 Remove duplicate word from cascade description 879fc3983 docs: Update the description of PostCSS config 2ffe539e3 fix: Use `=` instead of `:=` for variable reassignments (#1771) 7496b8f87 update 404 error for digitalocean docs c85caca4a Merge commit 'bdf935d66c1f02dfc942a30e9fc00519bba3aacb' c3888b63a docs: Regen docshelper 8a5942555 Merge commit '475f87f685439de0f907a9ffc29bfd1361eb1c59' 282007217 common: Add hugo.GoVersion 00b4b46da resources/page: Add :slugorfilename attribute git-subtree-dir: docs git-subtree-split: 392668f4f488d184b08b227028b01dbc02abd57a
2022-09-13 14:34:24 -04:00
[`resources`]: /getting-started/configuration/#configure-file-caches
[lists]: /templates/list/
[pagevars]: /variables/page/
[partials]: /templates/partials/
[searchconsole]: https://support.google.com/analytics/answer/1142414?hl=en
[singles]: /templates/single-page-templates/
[starters]: /tools/starter-kits/
[taxonomies]: /content-management/taxonomies/
[taxonomy templates]: /templates/taxonomy-templates/
[types]: /content-management/types/