Squashed 'docs/' changes from 19f44e150..ec0abe052
ec0abe052 Update index.md ed44339cd Update bio.md cef04eb95 Minor edits 4d45dcc8d Submitting Digital.gov to the Hugo Showcase d35126af7 Azure uses storage containers, not buckets; edited accordingly. (#1078) 9c249cc89 fix grammatical error 9728699a3 Release Hugo 0.69.2 cccabed0c Merge branch 'temp692' 3d0a740c4 releaser: Add release notes to /docs for release of 0.69.2 b760aceb1 HTTPS external links in docs 49e4631b0 Release 0.69.1 01f3da870 Merge branch 'temp691' 8280d85aa releaser: Add release notes to /docs for release of 0.69.1 40ea44d24 fix typo (#1088) 725f53643 Rebuild cache 80ee1efd9 Add KeyCDN Showcase f253e906e docs: Fix typo in Hugo's Security Model b3ffd1ad3 Mentioning a range is equivalent to foreach (#1086) 0c396911f Update jsonify function docs 376befc9a Fix typo (#1084) 4bdc9bc72 Mark .Page.UniqueID as deprecated and add .File.UniqueID 30a7b7bf2 Update hosting-on-github.md c5db4ba2b Update postprocess.md 1121f74a5 Update install guide with Scoop extended 8988aa6fa Merge branch 'postprocess' 225d3f9c7 Release Hugo 0.69.0 4caf7a89a releaser: Add release notes to /docs for release of 0.69.0 664b2a0fa Document resources.PostProcess and buildStats 9737b34e9 docs: Regen docs helper 0fab3ba24 Merge commit 'da3c3e5fbd0de65f956618cd2e35401460a3cd02' 96dad83b1 Update hosting-on-aws-amplify.md 57eb27897 Merge commit 'c494c37a4523fbf2db6274dc87e0877fd5bec24b' dcc7afef7 fix typo in getting started git-subtree-dir: docs git-subtree-split: ec0abe052bcfebc65c323df4ff14ad277bb405d8
|
@ -26,7 +26,7 @@ But when developing and building your site, the runtime is the `hugo` executable
|
||||||
* Hugo has a virtual file system and only the main project (not third-party components) is allowed to mount directories or files outside the project root.
|
* Hugo has a virtual file system and only the main project (not third-party components) is allowed to mount directories or files outside the project root.
|
||||||
* Only the main project can walk symbolic links.
|
* Only the main project can walk symbolic links.
|
||||||
* User-defined components have only read-access to the filesystem.
|
* User-defined components have only read-access to the filesystem.
|
||||||
* We shell out to some external binaries to support [Asciidoctor](/content-management/formats/#list-of-content-formats) and simliar, but those binaries and their flags are predefined. General functions to run arbitrary external OS commands have been [discussed](https://github.com/gohugoio/hugo/issues/796), but not implemented because of security concerns.
|
* We shell out to some external binaries to support [Asciidoctor](/content-management/formats/#list-of-content-formats) and similar, but those binaries and their flags are predefined. General functions to run arbitrary external OS commands have been [discussed](https://github.com/gohugoio/hugo/issues/796), but not implemented because of security concerns.
|
||||||
|
|
||||||
Hugo will soon introduce a concept of _Content Source Plugins_ (AKA _Pages from Data_), but the above will still hold true.
|
Hugo will soon introduce a concept of _Content Source Plugins_ (AKA _Pages from Data_), but the above will still hold true.
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Generate Markdown documentation for the Hugo CLI.
|
||||||
Generate Markdown documentation for the Hugo CLI.
|
Generate Markdown documentation for the Hugo CLI.
|
||||||
|
|
||||||
This command is, mostly, used to create up-to-date documentation
|
This command is, mostly, used to create up-to-date documentation
|
||||||
of Hugo's command-line interface for http://gohugo.io/.
|
of Hugo's command-line interface for https://gohugo.io/.
|
||||||
|
|
||||||
It creates one Markdown file per command with front matter suitable
|
It creates one Markdown file per command with front matter suitable
|
||||||
for rendering in Hugo.
|
for rendering in Hugo.
|
||||||
|
|
|
@ -43,6 +43,8 @@ always (default)
|
||||||
local
|
local
|
||||||
: The page will be included in any _local_ page collection, e.g. `$page.RegularPages`, `$page.Pages`. One use case for this would be to create fully navigable, but headless content sections. {{< new-in "0.68.0" >}}
|
: The page will be included in any _local_ page collection, e.g. `$page.RegularPages`, `$page.Pages`. One use case for this would be to create fully navigable, but headless content sections. {{< new-in "0.68.0" >}}
|
||||||
|
|
||||||
|
If true, the page will be treated as part of the project's collections and, when appropriate, returned by Hugo's listing methods (`.Pages`, `.RegularPages` etc...).
|
||||||
|
|
||||||
#### publishResources
|
#### publishResources
|
||||||
|
|
||||||
If set to true the [Bundle's Resources]({{< relref "content-management/page-bundles" >}}) will be published.
|
If set to true the [Bundle's Resources]({{< relref "content-management/page-bundles" >}}) will be published.
|
||||||
|
|
|
@ -34,7 +34,7 @@ The current list of content formats in Hugo:
|
||||||
|MMark|mmark|Mmark is deprecated and will be removed in a future release.|
|
|MMark|mmark|Mmark is deprecated and will be removed in a future release.|
|
||||||
|Emacs Org-Mode|org|See [go-org](https://github.com/niklasfasching/go-org).|
|
|Emacs Org-Mode|org|See [go-org](https://github.com/niklasfasching/go-org).|
|
||||||
|Asciidoc|asciidoc, adoc, ad|Needs Asciidoc or [Asciidoctor][ascii] installed.|
|
|Asciidoc|asciidoc, adoc, ad|Needs Asciidoc or [Asciidoctor][ascii] installed.|
|
||||||
|RST|rst|Needs [RST](http://docutils.sourceforge.net/rst.html) installed.|
|
|RST|rst|Needs [RST](https://docutils.sourceforge.io/rst.html) installed.|
|
||||||
|Pandoc|pandoc, pdc|Needs [Pandoc](https://www.pandoc.org/) installed.|
|
|Pandoc|pandoc, pdc|Needs [Pandoc](https://www.pandoc.org/) installed.|
|
||||||
|HTML|html, htm|To be treated as a content file, with layout, shortcodes etc., it must have front matter. If not, it will be copied as-is.|
|
|HTML|html, htm|To be treated as a content file, with layout, shortcodes etc., it must have front matter. If not, it will be copied as-is.|
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ Markdown syntax is simple enough to learn in a single sitting. The following are
|
||||||
[mmark]: https://github.com/mmarkdown/mmark
|
[mmark]: https://github.com/mmarkdown/mmark
|
||||||
[org]: https://orgmode.org/
|
[org]: https://orgmode.org/
|
||||||
[pandoc]: https://www.pandoc.org/
|
[pandoc]: https://www.pandoc.org/
|
||||||
[Pygments]: http://pygments.org/
|
[Pygments]: https://pygments.org/
|
||||||
[rest]: http://docutils.sourceforge.net/rst.html
|
[rest]: https://docutils.sourceforge.io/rst.html
|
||||||
[sc]: /content-management/shortcodes/
|
[sc]: /content-management/shortcodes/
|
||||||
[sct]: /templates/shortcode-templates/
|
[sct]: /templates/shortcode-templates/
|
||||||
|
|
|
@ -423,7 +423,7 @@ To learn more about creating custom shortcodes, see the [shortcode template docu
|
||||||
[Instagram]: https://www.instagram.com/
|
[Instagram]: https://www.instagram.com/
|
||||||
[pagevariables]: /variables/page/
|
[pagevariables]: /variables/page/
|
||||||
[partials]: /templates/partials/
|
[partials]: /templates/partials/
|
||||||
[Pygments]: http://pygments.org/
|
[Pygments]: https://pygments.org/
|
||||||
[quickstart]: /getting-started/quick-start/
|
[quickstart]: /getting-started/quick-start/
|
||||||
[sctemps]: /templates/shortcode-templates/
|
[sctemps]: /templates/shortcode-templates/
|
||||||
[scvars]: /variables/shortcodes/
|
[scvars]: /variables/shortcodes/
|
||||||
|
|
|
@ -107,7 +107,7 @@ On a Mac, you can install [Hub](https://github.com/github/hub) using [Homebrew](
|
||||||
brew install hub
|
brew install hub
|
||||||
```
|
```
|
||||||
|
|
||||||
Now we'll create an [alias in Bash](http://tldp.org/LDP/abs/html/aliases.html) so that typing `git` actually runs `Hub`:
|
Now we'll create an [alias in Bash](https://tldp.org/LDP/abs/html/aliases.html) so that typing `git` actually runs `Hub`:
|
||||||
|
|
||||||
```
|
```
|
||||||
echo "alias git='hub'" >> ~/.bash_profile
|
echo "alias git='hub'" >> ~/.bash_profile
|
||||||
|
|
|
@ -229,7 +229,7 @@ Which will render as follows in the Hugo docs:
|
||||||
> Without the threat of punishment, there is no joy in flight. - [Kobo Abe][abe]
|
> Without the threat of punishment, there is no joy in flight. - [Kobo Abe][abe]
|
||||||
|
|
||||||
{{% note "Blockquotes `!=` Admonitions" %}}
|
{{% note "Blockquotes `!=` Admonitions" %}}
|
||||||
Previous versions of Hugo documentation used blockquotes to draw attention to text. This is *not* the [intended semantic use of `<blockquote>`](http://html5doctor.com/cite-and-blockquote-reloaded/). Use blockquotes when quoting. To note or warn your user of specific information, use the admonition shortcodes that follow.
|
Previous versions of Hugo documentation used blockquotes to draw attention to text. This is *not* the [intended semantic use of `<blockquote>`](https://html5doctor.com/cite-and-blockquote-reloaded/). Use blockquotes when quoting. To note or warn your user of specific information, use the admonition shortcodes that follow.
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
## Admonitions
|
## Admonitions
|
||||||
|
@ -330,5 +330,5 @@ Similar to [contributing to Hugo development](/contribute/development/), the Hug
|
||||||
[ghforking]: https://help.github.com/articles/fork-a-repo/
|
[ghforking]: https://help.github.com/articles/fork-a-repo/
|
||||||
[hugodev]: /contribute/development/
|
[hugodev]: /contribute/development/
|
||||||
[shortcodeparams]: content-management/shortcodes/#shortcodes-without-markdown
|
[shortcodeparams]: content-management/shortcodes/#shortcodes-without-markdown
|
||||||
[sourceforge]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#admonitions
|
[sourceforge]: https://docutils.sourceforge.io/docs/ref/rst/directives.html#admonitions
|
||||||
[templating function]: /functions/
|
[templating function]: /functions/
|
||||||
|
|
|
@ -5,13 +5,13 @@ description: Encodes a given object to JSON.
|
||||||
godocref:
|
godocref:
|
||||||
date: 2017-02-01
|
date: 2017-02-01
|
||||||
publishdate: 2017-02-01
|
publishdate: 2017-02-01
|
||||||
lastmod: 2017-02-01
|
lastmod: 2020-04-13
|
||||||
categories: [functions]
|
categories: [functions]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: "functions"
|
parent: "functions"
|
||||||
keywords: [strings,json]
|
keywords: [strings,json]
|
||||||
signature: ["jsonify INPUT"]
|
signature: ["jsonify INPUT", "jsonify OPTIONS INPUT"]
|
||||||
workson: []
|
workson: []
|
||||||
hugoversion:
|
hugoversion:
|
||||||
relatedfuncs: [plainify]
|
relatedfuncs: [plainify]
|
||||||
|
@ -19,8 +19,18 @@ deprecated: false
|
||||||
aliases: []
|
aliases: []
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Jsonify encodes a given object to JSON.
|
||||||
|
|
||||||
|
To customize the printing of the JSON, pass a dictionary of options as the first
|
||||||
|
argument. Supported options are "prefix" and "indent". Each JSON element in
|
||||||
|
the output will begin on a new line beginning with *prefix* followed by one or
|
||||||
|
more copies of *indent* according to the indentation nesting.
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
{{ dict "title" .Title "content" .Plain | jsonify }}
|
{{ dict "title" .Title "content" .Plain | jsonify }}
|
||||||
|
{{ dict "title" .Title "content" .Plain | jsonify (dict "indent" " ") }}
|
||||||
|
{{ dict "title" .Title "content" .Plain | jsonify (dict "prefix" " " "indent" " ") }}
|
||||||
```
|
```
|
||||||
|
|
||||||
See also the `.PlainWords`, `.Plain`, and `.RawContent` [page variables][pagevars].
|
See also the `.PlainWords`, `.Plain`, and `.RawContent` [page variables][pagevars].
|
||||||
|
|
|
@ -20,6 +20,6 @@ draft: false
|
||||||
aliases: []
|
aliases: []
|
||||||
---
|
---
|
||||||
|
|
||||||
Just like in the Go programming language, Go and Hugo templates make heavy use of `range` to iterate over a map, array or slice.
|
Just like in the Go programming language, Go and Hugo templates make heavy use of `range` to iterate over a map, array or slice. Other templating languages use a foreach for the equivalent functionality.
|
||||||
|
|
||||||
`range` is fundamental to templating in Hugo. (See the [Introduction to Hugo Templates](/templates/introduction/) for more examples.)
|
`range` is fundamental to templating in Hugo. (See the [Introduction to Hugo Templates](/templates/introduction/) for more examples.)
|
||||||
|
|
|
@ -69,4 +69,4 @@ With the `.URL` page variable piped through `safeURL`, we get the desired output
|
||||||
|
|
||||||
[configuration]: /getting-started/configuration/
|
[configuration]: /getting-started/configuration/
|
||||||
[menus]: /content-management/menus/
|
[menus]: /content-management/menus/
|
||||||
[RFC 3986]: http://tools.ietf.org/html/rfc3986
|
[RFC 3986]: https://tools.ietf.org/html/rfc3986
|
||||||
|
|
|
@ -298,22 +298,26 @@ enableemoji: true
|
||||||
|
|
||||||
{{< new-in "0.66.0" >}}
|
{{< new-in "0.66.0" >}}
|
||||||
|
|
||||||
The `build` configuration section contains global build-realated configuration options.
|
The `build` configuration section contains global build-related configuration options.
|
||||||
|
|
||||||
{{< code-toggle file="config">}}
|
{{< code-toggle file="config">}}
|
||||||
[build]
|
[build]
|
||||||
useResourceCacheWhen="fallback"
|
useResourceCacheWhen="fallback"
|
||||||
|
writeStats = false
|
||||||
{{< /code-toggle >}}
|
{{< /code-toggle >}}
|
||||||
|
|
||||||
|
|
||||||
useResourceCacheWhen
|
useResourceCacheWhen
|
||||||
: When to use the cached resources in `/resources/_gen` for PostCSS and ToCSS. Valid values are `never`, `always` and `fallback`. The last value means that the cache will be tried if PostCSS/extended version is not available.
|
: When to use the cached resources in `/resources/_gen` for PostCSS and ToCSS. Valid values are `never`, `always` and `fallback`. The last value means that the cache will be tried if PostCSS/extended version is not available.
|
||||||
|
|
||||||
|
writeStats {{< new-in "0.69.0" >}}
|
||||||
|
: When enabled, a file named `hugo_stats.json` will be written to your project root with some aggregated data about the build, e.g. list of HTML entities published to be used to do [CSS pruning](/hugo-pipes/postprocess/#css-purging-with-postcss). If you're only using this for the production build, you should consider placing it below [config/production](/getting-started/configuration/#configuration-directory). It's also worth mentioning that, due to the nature of the partial server builds, new HTML entities will be added when you add or change them while the server is running, but the old values will not be removed until you restart the server or run a regular `hugo` build.
|
||||||
|
|
||||||
## Configure Server
|
## Configure Server
|
||||||
|
|
||||||
{{< new-in "0.67.0" >}}
|
{{< new-in "0.67.0" >}}
|
||||||
|
|
||||||
This is only relevant when running `hugo server`, and it allows to set HTTP headers during development, wihch allows you to test out your Content Security Policy and similar. The configuration format matches [Netlify's](https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file) with slighly more powerful [Glob matching](https://github.com/gobwas/glob):
|
This is only relevant when running `hugo server`, and it allows to set HTTP headers during development, which allows you to test out your Content Security Policy and similar. The configuration format matches [Netlify's](https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file) with slighly more powerful [Glob matching](https://github.com/gobwas/glob):
|
||||||
|
|
||||||
|
|
||||||
{{< code-toggle file="config">}}
|
{{< code-toggle file="config">}}
|
||||||
|
|
|
@ -86,6 +86,12 @@ If you are on a Windows machine and use [Scoop][] for package management, you ca
|
||||||
scoop install hugo
|
scoop install hugo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Or install the extended version with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scoop install hugo-extended
|
||||||
|
```
|
||||||
|
|
||||||
### Source
|
### Source
|
||||||
|
|
||||||
#### Prerequisite Tools
|
#### Prerequisite Tools
|
||||||
|
@ -517,7 +523,7 @@ Now that you've installed Hugo, read the [Quick Start guide][quickstart] and exp
|
||||||
[installgo]: https://golang.org/dl/
|
[installgo]: https://golang.org/dl/
|
||||||
[linuxbrew]: https://docs.brew.sh/Homebrew-on-Linux
|
[linuxbrew]: https://docs.brew.sh/Homebrew-on-Linux
|
||||||
[Path Editor]: https://patheditor2.codeplex.com/
|
[Path Editor]: https://patheditor2.codeplex.com/
|
||||||
[pygments]: http://pygments.org
|
[pygments]: https://pygments.org
|
||||||
[quickstart]: /getting-started/quick-start/
|
[quickstart]: /getting-started/quick-start/
|
||||||
[redhatforum]: https://discourse.gohugo.io/t/solved-fedora-copr-repository-out-of-service/2491
|
[redhatforum]: https://discourse.gohugo.io/t/solved-fedora-copr-repository-out-of-service/2491
|
||||||
[releases]: https://github.com/gohugoio/hugo/releases
|
[releases]: https://github.com/gohugoio/hugo/releases
|
||||||
|
|
|
@ -44,29 +44,14 @@ AWS Amplify is a combination of client library, CLI toolchain, and a Console for
|
||||||
|
|
||||||
## Using a Newer Version of Hugo
|
## Using a Newer Version of Hugo
|
||||||
|
|
||||||
If you need to use a different, perhaps newer, version of Hugo than the version currently supported by AWS Amplify, you can modify your build commands to include the downloading of Hugo itself. Here's an example of a build definition that includes the downloading of Hugo. Note that in ths example the "extended" version of Hugo is being used which includes support for SASS/SCSS.
|
If you need to use a different, perhaps newer, version of Hugo than the version currently supported by AWS Amplify:
|
||||||
|
|
||||||
|
1. Visit the [AWS Amplify Console](https://console.aws.amazon.com/amplify/home), and click the app you would like to modify
|
||||||
|
1. In the side navigation bar, Under App Settings, click **Build settings**
|
||||||
|
1. On the Build settings page, near the bottom, there is a section called **Build image settings**. Click **Edit**
|
||||||
|
1. Under **Live package updates**, click **Add package version override**
|
||||||
|
1. From the selection, click **Hugo** and ensure the version field says `latest`
|
||||||
|
1. Click **Save** to save the changes.
|
||||||
|
|
||||||
```
|
|
||||||
version: 0.1
|
|
||||||
frontend:
|
|
||||||
phases:
|
|
||||||
# IMPORTANT - Please verify your build commands
|
|
||||||
build:
|
|
||||||
commands:
|
|
||||||
- wget https://github.com/gohugoio/hugo/releases/download/v0.62.2/hugo_extended_0.62.2_Linux-64bit.tar.gz
|
|
||||||
- tar -xf hugo_extended_0.62.2_Linux-64bit.tar.gz
|
|
||||||
- mv hugo /usr/bin/hugo
|
|
||||||
- rm -rf hugo_extended_0.62.2_Linux-64bit.tar.gz
|
|
||||||
- hugo version
|
|
||||||
- hugo
|
|
||||||
artifacts:
|
|
||||||
# IMPORTANT - Please verify your build output directory
|
|
||||||
baseDirectory: public
|
|
||||||
files:
|
|
||||||
- '**/*'
|
|
||||||
cache:
|
|
||||||
paths: []
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
[Quick Start]: /getting-started/quick-start/
|
[Quick Start]: /getting-started/quick-start/
|
||||||
|
|
|
@ -42,7 +42,7 @@ To create a Project Pages site, choose a method from the *Project Pages* section
|
||||||
|
|
||||||
## GitHub User or Organization Pages
|
## GitHub User or Organization Pages
|
||||||
|
|
||||||
As mentioned [the GitHub Pages documentation][ghorgs], you can host a user/organization page in addition to project pages. Here are the key differences in GitHub Pages websites for Users and Organizations:
|
As mentioned in the [GitHub Pages documentation][ghorgs], you can host a user/organization page in addition to project pages. Here are the key differences in GitHub Pages websites for Users and Organizations:
|
||||||
|
|
||||||
1. You must use a `<USERNAME>.github.io` to host your **generated** content
|
1. You must use a `<USERNAME>.github.io` to host your **generated** content
|
||||||
2. Content from the `master` branch will be used to publish your GitHub Pages site
|
2. Content from the `master` branch will be used to publish your GitHub Pages site
|
||||||
|
@ -54,7 +54,7 @@ This is a much simpler setup as your Hugo files and generated content are publis
|
||||||
1. Create a `<YOUR-PROJECT>` (e.g. `blog`) repository on GitHub. This repository will contain Hugo's content and other source files.
|
1. Create a `<YOUR-PROJECT>` (e.g. `blog`) repository on GitHub. This repository will contain Hugo's content and other source files.
|
||||||
2. Create a `<USERNAME>.github.io` GitHub repository. This is the repository that will contain the fully rendered version of your Hugo website.
|
2. Create a `<USERNAME>.github.io` GitHub repository. This is the repository that will contain the fully rendered version of your Hugo website.
|
||||||
3. `git clone <YOUR-PROJECT-URL> && cd <YOUR-PROJECT>`
|
3. `git clone <YOUR-PROJECT-URL> && cd <YOUR-PROJECT>`
|
||||||
4. Paste your existing Hugo project into a new local `<YOUR-PROJECT>` repository. Make sure your website works locally (`hugo server` or `hugo server -t <YOURTHEME>`) and open your browser to <http://localhost:1313>.
|
4. Paste your existing Hugo project into the new local `<YOUR-PROJECT>` repository. Make sure your website works locally (`hugo server` or `hugo server -t <YOURTHEME>`) and open your browser to <http://localhost:1313>.
|
||||||
5. Once you are happy with the results:
|
5. Once you are happy with the results:
|
||||||
* Press <kbd>Ctrl</kbd>+<kbd>C</kbd> to kill the server
|
* Press <kbd>Ctrl</kbd>+<kbd>C</kbd> to kill the server
|
||||||
* Before proceeding run `rm -rf public` to completely remove the `public` directory
|
* Before proceeding run `rm -rf public` to completely remove the `public` directory
|
||||||
|
|
|
@ -19,7 +19,7 @@ aliases: []
|
||||||
toc: true
|
toc: true
|
||||||
---
|
---
|
||||||
|
|
||||||
You can use the "hugo deploy" command to upload your site directly to a Google Cloud Storage (GCS) bucket, an AWS S3 bucket, and/or an Azure Storage bucket.
|
You can use the "hugo deploy" command to upload your site directly to a Google Cloud Storage (GCS) bucket, an AWS S3 bucket, and/or an Azure Storage container.
|
||||||
|
|
||||||
## Assumptions
|
## Assumptions
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ Follow the [AWS instructions for how to create a bucket](https://docs.aws.amazon
|
||||||
|
|
||||||
### Azure Storage
|
### Azure Storage
|
||||||
|
|
||||||
Follow the [Azure instructions for how to create a bucket](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal).
|
Follow the [Azure instructions for how to create a storage container](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal).
|
||||||
|
|
||||||
## Configure the deployment
|
## Configure the deployment
|
||||||
|
|
||||||
|
|
70
content/en/hugo-pipes/postprocess.md
Executable file
|
@ -0,0 +1,70 @@
|
||||||
|
---
|
||||||
|
title: PostProcess
|
||||||
|
description: Allows delaying of resource transformations to after the build.
|
||||||
|
date: 2020-04-09
|
||||||
|
categories: [asset management]
|
||||||
|
keywords: []
|
||||||
|
menu:
|
||||||
|
docs:
|
||||||
|
parent: "pipes"
|
||||||
|
weight: 39
|
||||||
|
weight: 39
|
||||||
|
sections_weight: 39
|
||||||
|
---
|
||||||
|
|
||||||
|
Marking a resource with `resources.PostProcess` delays any transformations to after the build, typically because one or more of the steps in the transformation chain depends on the result of the build (e.g. files in `public`).{{< new-in "0.69.0" >}}
|
||||||
|
|
||||||
|
A prime use case for this is [CSS purging with PostCSS](#css-purging-with-postcss).
|
||||||
|
|
||||||
|
There are currently two limitations to this:
|
||||||
|
|
||||||
|
1. This only works in `*.html` templates (i.e. templates that produces HTML files).
|
||||||
|
2. You cannot manipulate the values returned from the resource's methods. E.g. the `upper` in this example will not work as expected:
|
||||||
|
|
||||||
|
```go-html-template
|
||||||
|
{{ $css := resources.Get "css/main.css" }}
|
||||||
|
{{ $css = $css | resources.PostCSS | minify | fingerprint | resources.PostProcess }}
|
||||||
|
{{ $css.RelPermalink | upper }}
|
||||||
|
```
|
||||||
|
|
||||||
|
## CSS purging with PostCSS
|
||||||
|
|
||||||
|
{{% note %}}
|
||||||
|
There are several ways to set up CSS purging with PostCSS in Hugo. If you have a simple project, you should consider going the simpler route and drop the use of `resources.PostProcess` and just extract keywords from the templates. See the [Tailwind documentation](https://tailwindcss.com/docs/controlling-file-size/#app) for some examples.
|
||||||
|
{{% /note %}}
|
||||||
|
|
||||||
|
The below configuration will write a `hugo_stats.json` file to the project root as part of the build. If you're only using this for the production build, you should consider placing it below [config/production](/getting-started/configuration/#configuration-directory).
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[build]
|
||||||
|
writeStats = true
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||||
|
content: [ './hugo_stats.json' ],
|
||||||
|
defaultExtractor: (content) => {
|
||||||
|
let els = JSON.parse(content).htmlElements;
|
||||||
|
return els.tags.concat(els.classes, els.ids);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
plugins: [
|
||||||
|
require('tailwindcss'),
|
||||||
|
require('autoprefixer'),
|
||||||
|
...(process.env.HUGO_ENVIRONMENT === 'production' ? [ purgecss ] : [])
|
||||||
|
]
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that in the example above, the "CSS purge step" will only be applied to the production build. This means that you need to do something like this in your head template to build and include your CSS:
|
||||||
|
|
||||||
|
```go-html-template
|
||||||
|
{{ $css := resources.Get "css/main.css" }}
|
||||||
|
{{ $css = $css | resources.PostCSS }}
|
||||||
|
{{ if hugo.IsProduction }}
|
||||||
|
{{ $css = $css | minify | fingerprint | resources.PostProcess }}
|
||||||
|
{{ end }}
|
||||||
|
<link href="{{ $css.RelPermalink }}" rel="stylesheet" />
|
||||||
|
```
|
BIN
content/en/news/0.69.0-relnotes/hugo-69-easter-featured.png
Normal file
After Width: | Height: | Size: 389 KiB |
73
content/en/news/0.69.0-relnotes/index.md
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
date: 2020-04-10
|
||||||
|
title: "Post Build Resource Transformations"
|
||||||
|
description: "Hugo 0.69.0 allows you to delay resource processing to after the build, the prime use case being removal of unused CSS."
|
||||||
|
categories: ["Releases"]
|
||||||
|
---
|
||||||
|
|
||||||
|
**It's Eeaster, a time for mysteries and puzzles.** And at first glance, this Hugo release looks a little mysterious. The core of if is a mind-twister:
|
||||||
|
|
||||||
|
```go-html-template
|
||||||
|
{{ $css := resources.Get "css/main.css" }}
|
||||||
|
{{ $css = $css | resources.PostCSS }}
|
||||||
|
{{ if hugo.IsProduction }}
|
||||||
|
{{ $css = $css | minify | fingerprint | resources.PostProcess }}
|
||||||
|
{{ end }}
|
||||||
|
<link href="{{ $css.RelPermalink }}" rel="stylesheet" />
|
||||||
|
```
|
||||||
|
|
||||||
|
The above uses the new [resources.PostProcess](https://gohugo.io/hugo-pipes/postprocess/) template function which tells Hugo to postpone the transformation of the Hugo Pipes chain to _after the build_, allowing the build steps to use the build output in `/public` as part of its processing.
|
||||||
|
|
||||||
|
The prime current use case for the above is CSS pruning in PostCSS. In simple cases you can use the templates as a base for the content filters, but that has its limitations and can be very hard to setup, especially in themed configurations. So we have added a new [writeStats](https://gohugo.io/getting-started/configuration/#configure-build) configuration that, when enabled, will write a file named `hugo_stats.json` to your project root with some aggregated data about the build, e.g. list of HTML entities published, to be used to do [CSS pruning](https://gohugo.io/hugo-pipes/postprocess/#css-purging-with-postcss).
|
||||||
|
|
||||||
|
This release represents **20 contributions by 10 contributors** to the main Hugo code base.[@bep](https://github.com/bep) leads the Hugo development with a significant amount of contributions, but also a big shoutout to [@moorereason](https://github.com/moorereason), [@jaywilliams](https://github.com/jaywilliams), and [@satotake](https://github.com/satotake) for their ongoing contributions.
|
||||||
|
And a big thanks to [@digitalcraftsman](https://github.com/digitalcraftsman) and [@onedrawingperday](https://github.com/onedrawingperday) for their relentless work on keeping the themes site in pristine condition and to [@davidsneighbour](https://github.com/davidsneighbour) and [@kaushalmodi](https://github.com/kaushalmodi) for all the great work on the documentation site.
|
||||||
|
|
||||||
|
Many have also been busy writing and fixing the documentation in [hugoDocs](https://github.com/gohugoio/hugoDocs),
|
||||||
|
which has received **14 contributions by 7 contributors**. A special thanks to [@bep](https://github.com/bep), [@coliff](https://github.com/coliff), [@dmgawel](https://github.com/dmgawel), and [@jasikpark](https://github.com/jasikpark) for their work on the documentation site.
|
||||||
|
|
||||||
|
|
||||||
|
Hugo now has:
|
||||||
|
|
||||||
|
* 43052+ [stars](https://github.com/gohugoio/hugo/stargazers)
|
||||||
|
* 438+ [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
|
||||||
|
* 302+ [themes](http://themes.gohugo.io/)
|
||||||
|
|
||||||
|
## Enhancements
|
||||||
|
|
||||||
|
### Templates
|
||||||
|
|
||||||
|
* Extend Jsonify to support options map [8568928a](https://github.com/gohugoio/hugo/commit/8568928aa8e82a6bd7de4555c3703d8835fbd25b) [@moorereason](https://github.com/moorereason)
|
||||||
|
* Extend Jsonify to support optional indent parameter [1bc93021](https://github.com/gohugoio/hugo/commit/1bc93021e3dca6405628f6fdd2dc32cff9c9836c) [@moorereason](https://github.com/moorereason) [#5040](https://github.com/gohugoio/hugo/issues/5040)
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
* Regen docs helper [b7ff4dc2](https://github.com/gohugoio/hugo/commit/b7ff4dc23e6314fd09ee2c1e24cde96fc833164e) [@bep](https://github.com/bep)
|
||||||
|
* Collect HTML elements during the build to use in PurgeCSS etc. [095bf64c](https://github.com/gohugoio/hugo/commit/095bf64c99f57efe083540a50e658808a0a1c32b) [@bep](https://github.com/bep) [#6999](https://github.com/gohugoio/hugo/issues/6999)
|
||||||
|
* Update to latest emoji package [7791a804](https://github.com/gohugoio/hugo/commit/7791a804e2179667617b3b145b0fe7eba17627a1) [@QuLogic](https://github.com/QuLogic)
|
||||||
|
* Update hosting-on-aws-amplify.md [c774b230](https://github.com/gohugoio/hugo/commit/c774b230e941902675af081f118ea206a4f2a04e) [@Helicer](https://github.com/Helicer)
|
||||||
|
* Add basic "post resource publish support" [2f721f8e](https://github.com/gohugoio/hugo/commit/2f721f8ec69c52202815cd1b543ca4bf535c0901) [@bep](https://github.com/bep) [#7146](https://github.com/gohugoio/hugo/issues/7146)
|
||||||
|
* Typo correction [7eba37ae](https://github.com/gohugoio/hugo/commit/7eba37ae9b8653be4fc21a0dbbc6f35ca5b9280e) [@fekete-robert](https://github.com/fekete-robert)
|
||||||
|
* Use semver for min_version per recommendations [efc61d6f](https://github.com/gohugoio/hugo/commit/efc61d6f3b9f5fb294411ac1dc872b8fc5bdbacb) [@jaywilliams](https://github.com/jaywilliams)
|
||||||
|
* Updateto gitmap v1.1.2 [4de3ecdc](https://github.com/gohugoio/hugo/commit/4de3ecdc2658ffd54d2b5073c5ff303b4bf29383) [@dragtor](https://github.com/dragtor) [#6985](https://github.com/gohugoio/hugo/issues/6985)
|
||||||
|
* Add data context to the key in ExecuteAsTemplate" [c9dc316a](https://github.com/gohugoio/hugo/commit/c9dc316ad160e78c9dff4e75313db4cac8ea6414) [@bep](https://github.com/bep) [#7064](https://github.com/gohugoio/hugo/issues/7064)
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
* Fix hugo mod vendor for regular file mounts [d8d6a25b](https://github.com/gohugoio/hugo/commit/d8d6a25b5755bedaf90261a1539dc37a2f05c3df) [@bep](https://github.com/bep) [#7140](https://github.com/gohugoio/hugo/issues/7140)
|
||||||
|
* Revert "Revert "common/herrors: Fix typos in comments"" [9f12be54](https://github.com/gohugoio/hugo/commit/9f12be54ee84f24efdf7c58f05867e8d0dea2ccb) [@bep](https://github.com/bep)
|
||||||
|
* Fix typos in comments" [4437e918](https://github.com/gohugoio/hugo/commit/4437e918cdab1d84f2f184fe71e5dac14aa48897) [@bep](https://github.com/bep)
|
||||||
|
* Fix typos in comments [1123711b](https://github.com/gohugoio/hugo/commit/1123711b0979b1647d7c486f67af7503afb11abb) [@rnazmo](https://github.com/rnazmo)
|
||||||
|
* Fix TrimShortHTML [9c998753](https://github.com/gohugoio/hugo/commit/9c9987535f98714c8a4ec98903f54233735ef0e4) [@satotake](https://github.com/satotake) [#7081](https://github.com/gohugoio/hugo/issues/7081)
|
||||||
|
* Fix IsDescendant/IsAncestor for overlapping section names [4a39564e](https://github.com/gohugoio/hugo/commit/4a39564efe7b02a685598ae9dbae95e2326c0230) [@bep](https://github.com/bep) [#7096](https://github.com/gohugoio/hugo/issues/7096)
|
||||||
|
* fix typo in getting started [b6e097cf](https://github.com/gohugoio/hugo/commit/b6e097cfe65ecd1d47c805969082e6805563612b) [@matrixise](https://github.com/matrixise)
|
||||||
|
* Fix _build.list.local logic [523d5194](https://github.com/gohugoio/hugo/commit/523d51948fc20e2afb4721b43203c5ab696ae220) [@bep](https://github.com/bep) [#7089](https://github.com/gohugoio/hugo/issues/7089)
|
||||||
|
* Fix cache reset for a page's collections on server live reload [cfa73050](https://github.com/gohugoio/hugo/commit/cfa73050a49b2646fe3557cefa0ed31989b0eeeb) [@bep](https://github.com/bep) [#7085](https://github.com/gohugoio/hugo/issues/7085)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
29
content/en/news/0.69.1-relnotes/index.md
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
date: 2020-04-22
|
||||||
|
title: "Hugo 0.69.1: A couple of Bug Fixes"
|
||||||
|
description: "This version fixes a couple of bugs introduced in 0.69.0."
|
||||||
|
categories: ["Releases"]
|
||||||
|
images:
|
||||||
|
- images/blog/hugo-bug-poster.png
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This is a bug-fix release with a couple of important fixes.
|
||||||
|
|
||||||
|
* hugolib/filesystems: Fix typo in test suite [49e6c8cb](https://github.com/gohugoio/hugo/commit/49e6c8cb4ed83e20f1e0ac164e91c38854177b99) [@panakour](https://github.com/panakour)
|
||||||
|
* Fix class collector when running with --minify [f37e77f2](https://github.com/gohugoio/hugo/commit/f37e77f2d338cf876cfa637a662acd76f0f2009b) [@bep](https://github.com/bep) [#7161](https://github.com/gohugoio/hugo/issues/7161)
|
||||||
|
* related: Fix toLower [27af5a33](https://github.com/gohugoio/hugo/commit/27af5a339a4d3c5712b5ed946a636a8c21916039) [@bep](https://github.com/bep) [#7198](https://github.com/gohugoio/hugo/issues/7198)
|
||||||
|
* Fix broken test [b3c82575](https://github.com/gohugoio/hugo/commit/b3c825756f3251f8b26e53262f9d6f484aecf750) [@bep](https://github.com/bep)
|
||||||
|
* tpl/tmplimpl/template: Change defer RLock to RUnlock [5146dc61](https://github.com/gohugoio/hugo/commit/5146dc614fc45df698ebf890af06421dea988c96) [@BurtonQin](https://github.com/BurtonQin)
|
||||||
|
* hugolib: Add Unlock before panic [736f84b2](https://github.com/gohugoio/hugo/commit/736f84b2d539857f7fdd0e42353af80b4dccfe8d) [@BurtonQin](https://github.com/BurtonQin)
|
||||||
|
* docs: Fix typo in Hugo's Security Model [cd4d8202](https://github.com/gohugoio/hugo/commit/cd4d8202016bd3eb5ed9144c8945edaba73c8cf4) [@sensimevanidus](https://github.com/sensimevanidus)
|
||||||
|
* deps: Update go-org to v1.1.0 [2b28e5a9](https://github.com/gohugoio/hugo/commit/2b28e5a9cb79af2a8d70c80036f52bcf5399b9df) [@niklasfasching](https://github.com/niklasfasching)
|
||||||
|
* commands: Modify gen chromastyles to output all CSS classes [102ec2da](https://github.com/gohugoio/hugo/commit/102ec2da7adcc4afb7050b17989f0486f8379679) [@acahir](https://github.com/acahir) [#7167](https://github.com/gohugoio/hugo/issues/7167)
|
||||||
|
* deps: Update to goldmark v1.1.28 [feaa582c](https://github.com/gohugoio/hugo/commit/feaa582cbe950e82969da5e99e3fb9a3947025df) [@bep](https://github.com/bep) [#7113](https://github.com/gohugoio/hugo/issues/7113)
|
||||||
|
* Fix query parameter handling in server fast render mode [ee67dbef](https://github.com/gohugoio/hugo/commit/ee67dbeff5bae6941facaaa39cb995a1ee6def03) [@bep](https://github.com/bep) [#7163](https://github.com/gohugoio/hugo/issues/7163)
|
||||||
|
|
||||||
|
|
||||||
|
|
21
content/en/news/0.69.2-relnotes/index.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
date: 2020-04-24
|
||||||
|
title: "Hugo 0.69.2: A couple of Bug Fixes"
|
||||||
|
description: "This version fixes a couple of bugs introduced in 0.69.0."
|
||||||
|
categories: ["Releases"]
|
||||||
|
images:
|
||||||
|
- images/blog/hugo-bug-poster.png
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This is a bug-fix release with a couple of important fixes.
|
||||||
|
|
||||||
|
* Fix IsAncestor and IsDescendant when the same page is passed [8d5766d4](https://github.com/gohugoio/hugo/commit/8d5766d417d6564a1aa1cbe8f9a29ab9bba22371) [@tekezo](https://github.com/tekezo)
|
||||||
|
* deps: Update goldmark-highlighting [5c41f41a](https://github.com/gohugoio/hugo/commit/5c41f41ad4b14e48aea64687a7600f5ad231e879) [@satotake](https://github.com/satotake) [#7027](https://github.com/gohugoio/hugo/issues/7027)[#6596](https://github.com/gohugoio/hugo/issues/6596)
|
||||||
|
* Fix IsAncestor and IsDescendant under subsection [27a4c441](https://github.com/gohugoio/hugo/commit/27a4c4410cd9592249925fb14b32605fb961c597) [@tekezo](https://github.com/tekezo)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
[Camping Arolla](http://www.camping-arolla.com/) is located in the heart of the Swiss Alps, at an altitude of 1.950 meters.
|
[Camping Arolla](https://www.camping-arolla.com) is located in the heart of the Swiss Alps, at an altitude of 1.950 meters.
|
||||||
|
|
||||||
The site is built by:
|
The site is built by:
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ byline: "[Didier Divinerites](https://github.com/divinerites)"
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Swiss [Arolla campsite](http://www.camping-arolla.com/) runs the highest campsite in Europe and I'm completely re-doing their actuel Website with Hugo.
|
Swiss [Arolla campsite](https://www.camping-arolla.com) runs the highest campsite in Europe and I'm completely re-doing their actuel Website with Hugo.
|
||||||
|
|
||||||
But they just launch a brand new offer (luxury tents with bed and fire oven), and we couldn't wait for the proper new website for having this promoted: we needed the website up and running within 24h!
|
But they just launch a brand new offer (luxury tents with bed and fire oven), and we couldn't wait for the proper new website for having this promoted: we needed the website up and running within 24h!
|
||||||
|
|
||||||
|
@ -18,8 +18,8 @@ So we decided to quickly launch a dedicated [independent web site](https://www.c
|
||||||
- Replace the main images.
|
- Replace the main images.
|
||||||
- Add a [hugo-easy-gallery / photoswipe](https://github.com/liwenyip/hugo-easy-gallery) on the main page with attractive images.
|
- Add a [hugo-easy-gallery / photoswipe](https://github.com/liwenyip/hugo-easy-gallery) on the main page with attractive images.
|
||||||
- Add the promo video with a simple *vimeo* shortcode.
|
- Add the promo video with a simple *vimeo* shortcode.
|
||||||
- Replace the Google Maps widget by the [OpenStreetMap](http://www.openstreetmap.org/) equivalent
|
- Replace the Google Maps widget by the [OpenStreetMap](https://www.openstreetmap.org/) equivalent
|
||||||
- Use a [Zotabox](http://www.zotabox.com) contact form.
|
- Use a [Zotabox](https://www.zotabox.com) contact form.
|
||||||
- Write the content in French & in English directly on the content pages, describe their services, add fun facts and true testimonies.
|
- Write the content in French & in English directly on the content pages, describe their services, add fun facts and true testimonies.
|
||||||
- Setup a GDPR compliant site with the new Hugo options.
|
- Setup a GDPR compliant site with the new Hugo options.
|
||||||
- Use [Netlify](https://www.netlify.com) for publishing it in a breeze.
|
- Use [Netlify](https://www.netlify.com) for publishing it in a breeze.
|
||||||
|
|
2
content/en/showcase/digitalgov/bio.md
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
**Digital.gov** helps people in the U.S. government deliver better, more accessible digital services through publishing essential guidance, resources, tools, and online events that make it easier for people to design, build, and deliver essential services for the public.
|
BIN
content/en/showcase/digitalgov/featured.png
Normal file
After Width: | Height: | Size: 430 KiB |
66
content/en/showcase/digitalgov/index.md
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
---
|
||||||
|
title: Digital.gov
|
||||||
|
date: 2020-05-01
|
||||||
|
description: "Showcase: \"Guidance on building better digital services in government.\""
|
||||||
|
siteURL: https://digital.gov/
|
||||||
|
siteSource: https://github.com/gsa/digitalgov.gov
|
||||||
|
---
|
||||||
|
|
||||||
|
For over a decade, Digital.gov has provided guidance, training, and community support to the people who are responsible for delivering digital services in the U.S. government. Essentially, it is a place where people can find examples of problems being solved in government, and get links to the tools and resources they need.
|
||||||
|
|
||||||
|
Through collaboration in our communities of practice, Digital.gov is a window into the people who work in technology in government and the challenges they face making digital services stronger and more effective. [Read more about our site »](https://digital.gov/2019/12/19/a-new-digitalgov/)
|
||||||
|
|
||||||
|
Digital.gov is built using the [U.S. Web Design System](https://designsystem.digital.gov/) (USWDS) and have followed the [design principles](https://designsystem.digital.gov/maturity-model/) in building out our new site:
|
||||||
|
|
||||||
|
- **Start with real user needs** — We used human-centered design methods to inform our product decisions (like qualitative user research), and gathered feedback from real users. We also continually test our assumptions with small experiments.
|
||||||
|
- **Earn trust** —We recognize that trust has to be earned every time. We are including all [required links and content](https://digital.gov/resources/required-web-content-and-links/) on our site, clearly identifying as a government site, building with modern best practices, and using https.
|
||||||
|
- **Embrace accessibility** — [Accessibility](https://digital.gov/resources/intro-accessibility/) affects everybody, and we built it into every decision. We’re continually working to conform to Section 508 requirements, use user experience best practices, and support a wide range of devices.
|
||||||
|
- **Promote continuity** — We started from shared solutions like USWDS and [Federalist](https://federalist.18f.gov/). We designed our site to clearly identify as a government site by including USWDS’s .gov banner, common colors and patterns, and built with modern best practices.
|
||||||
|
- **Listen** — We actively collect user feedback and web metrics. We use the [Digital Analytics Program](https://digital.gov/services/dap/) (DAP) and analyze the data to discover actionable insights. We make small, incremental changes to continuously improve our website by listening to readers and learning from what we hear.
|
||||||
|
|
||||||
|
_More on the [USWDS maturity model »](https://designsystem.digital.gov/maturity-model/)_
|
||||||
|
|
||||||
|
## Open Tools
|
||||||
|
|
||||||
|
We didn’t start from scratch. We built and designed the Digital.gov using many of the open-source tools and services that we develop for government here in the [Technology Transformation Services](https://www.gsa.gov/tts/) (TTS).
|
||||||
|
|
||||||
|
Using services that make it possible to design, build, and iterate quickly are essential to modern web design and development, which is why [Federalist](https://federalist.18f.gov/) and the [U.S. Web Design System](https://designsystem.digital.gov/) are such a great combination.
|
||||||
|
|
||||||
|
**Why Hugo?** Well, with around `~3,000` files _(and growing)_ and `~9,000` built pages, we needed a site generator that could handle that volume with lightning fast speed.
|
||||||
|
|
||||||
|
Hugo was the clear option. The [Federalist](https://federalist.18f.gov/) team quickly added it to their available site generators, and we were off.
|
||||||
|
|
||||||
|
At the moment, it takes around `32 seconds` to build close to `~10,000` pages!
|
||||||
|
|
||||||
|
Take a look:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
|
||||||
|
| EN
|
||||||
|
-------------------+-------
|
||||||
|
Pages | 7973
|
||||||
|
Paginator pages | 600
|
||||||
|
Non-page files | 108
|
||||||
|
Static files | 851
|
||||||
|
Processed images | 0
|
||||||
|
Aliases | 1381
|
||||||
|
Sitemaps | 1
|
||||||
|
Cleaned | 0
|
||||||
|
|
||||||
|
Built in 32.427 seconds
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
In addition to Hugo, we are proudly using a number of other tools and services, all built by government are free to use:
|
||||||
|
|
||||||
|
- [Federalist](https://federalist.18f.gov/)
|
||||||
|
- [Search.gov](https://www.search.gov/) — A free, hosted search platform for federal websites.
|
||||||
|
- [Cloud.gov](https://www.cloud.gov/) — helps teams build, run, and authorize cloud-ready or legacy government systems quickly and cheaply.
|
||||||
|
- [Federal CrowdSource Mobile Testing Program](https://digital.gov/services/mobile-application-testing-program/) — Free mobile compatibility testing by feds, for feds.
|
||||||
|
- [Digital Analytics Program](https://digital.gov/services/dap/) (DAP) — A free analytics tool for measuring digital services in the federal government
|
||||||
|
- [Section508.gov](https://www.section508.gov/) and [PlainLanguage.gov](https://www.plainlanguage.gov/) resources
|
||||||
|
- [API.data.gov](https://api.data.gov/) — a free API management service for federal agencies
|
||||||
|
- [U.S. Digital Registry](https://digital.gov/services/u-s-digital-registry/) — A resource for confirming the official status of government social media accounts, mobile apps, and mobile websites.
|
||||||
|
|
||||||
|
|
||||||
|
**Questions or feedback?** [Submit an issue](https://github.com/GSA/digitalgov.gov/issues) or send us an email to [digitalgov@gsa.gov](mailto:digitalgov@gsa.gov) :heart:
|
|
@ -3,6 +3,6 @@ A business page for Flesland Flis AS. A Norwegian Tiler located in Bergen.
|
||||||
|
|
||||||
The page is designed and developed by Sindre Gusdal:
|
The page is designed and developed by Sindre Gusdal:
|
||||||
|
|
||||||
* [Absoluttweb AS](http://www.absoluttweb.no)
|
* [Absoluttweb AS](https://www.absoluttweb.no)
|
||||||
* [Sindre Gusdal](https://www.linkedin.com/in/sindregusdal/)
|
* [Sindre Gusdal](https://www.linkedin.com/in/sindregusdal/)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ title: Flesland Flis AS
|
||||||
date: 2018-04-24
|
date: 2018-04-24
|
||||||
description: "showcase: Business Page for a tile shop in Bergen, Norway"
|
description: "showcase: Business Page for a tile shop in Bergen, Norway"
|
||||||
siteURL: https://www.fleslandflis.no
|
siteURL: https://www.fleslandflis.no
|
||||||
byline: "[Sindre Gusdal](http://www.absoluttweb.no), Absoluttweb AS"
|
byline: "[Sindre Gusdal](https://www.absoluttweb.no), Absoluttweb AS"
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
1
content/en/showcase/keycdn/bio.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
[KeyCDN](https://www.keycdn.com) is a high performance content delivery network (CDN) offering many powerful features, including image processing that can transform and optimize images in real time. Our network offers global coverage to speed up content delivery and is capable of delivering entire static websites, like those built with Hugo, at the edge.
|
BIN
content/en/showcase/keycdn/featured.png
Normal file
After Width: | Height: | Size: 350 KiB |
30
content/en/showcase/keycdn/index.md
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
title: KeyCDN
|
||||||
|
date: 2020-04-10
|
||||||
|
description: "Showcase: \"Hugo has become an integral part of our stack.\""
|
||||||
|
siteURL: https://www.keycdn.com
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
At KeyCDN one of our primary focuses is on performance. With speed being ingrained in our DNA we knew from the start that we must use a fast static website generator that could meet our requirements. When evaluating the right solution, Hugo met our requirements and we looked no further as it was the fastest and most flexible.
|
||||||
|
|
||||||
|
## Why we chose Hugo
|
||||||
|
|
||||||
|
Before our migration to Hugo our website was powered by a PHP-based website that had about 50 pages and a WordPress website that had over 500 posts between our blog and knowledge base. This became harder to maintain as time continued. We felt like we were losing the speed and flexibility that we require. To overcome this we knew we needed to convert our website to be static. This would allow our website to be faster and more secure as it could be delivered by all of our edge locations.
|
||||||
|
|
||||||
|
It wasn’t an easy task at the beginning, however, after evaluating Hugo and benchmarking it we knew we had found the ideal solution. Hugo was by far the fastest setup and offered an intuitive way to build our entire website exactly as needed. The Go-based templates, shortcodes, and configuration options made it easy to build a complex website.
|
||||||
|
|
||||||
|
In the fall of 2018 we started the migration and within a couple short months we had built a custom static website with Hugo and migrated all content from our old systems. The simplicity and vast amount of functionality that Hugo offers made this process fast and left our entire team, including all of our writers and developers, happy with the migration. Since migrating to Hugo we haven’t looked back. Hugo has become an integral part of our stack. We’re grateful to all those who have contributed to make Hugo what it is today.
|
||||||
|
|
||||||
|
## Technical overview
|
||||||
|
|
||||||
|
Below is an overview of what we used with Hugo to build our website:
|
||||||
|
|
||||||
|
* [KeyCDN](https://www.keycdn.com) uses a custom theme and is our primary hub for all style sheets and JavaScript. Our other websites, like [KeyCDN Tools](https://tools.keycdn.com), only import the required style sheets and JavaScript.
|
||||||
|
* We use [Gulp](https://gulpjs.com) in our build process for many tasks, such as combining, versioning, and compressing our style sheets as well as our JavaScript.
|
||||||
|
* Our search is powered by a custom solution that we’ve built. It allows our pages, blog, and knowledge base to be searched. It uses [Axios](https://github.com/axios/axios) to send a `POST` request containing the search query. An index file in JSON generated by Hugo is searched and the results are then returned.
|
||||||
|
* Our commenting system is also powered by a custom solution that we’ve built. It uses Axios to send a `GET` request containing the slug to pull the comment thread and a `POST` request containing the name, email address, and comment when submitting a comment.
|
||||||
|
* Our contact form is a simple HTML form, which uses Axios as well.
|
||||||
|
* Our writers use shortcodes to enhance the capability of markdown.
|
||||||
|
* Our entire website is delivered through KeyCDN using a Pull Zone, which means all of our edge locations are delivering our website.
|
|
@ -534,17 +534,17 @@ See the documentation on [`where` function][wherefunction] and
|
||||||
[`first` function][firstfunction] for further details.
|
[`first` function][firstfunction] for further details.
|
||||||
|
|
||||||
[base]: /templates/base/
|
[base]: /templates/base/
|
||||||
[bepsays]: http://bepsays.com/en/2016/12/19/hugo-018/
|
[bepsays]: https://bepsays.com/en/2016/12/19/hugo-018/
|
||||||
[directorystructure]: /getting-started/directory-structure/
|
[directorystructure]: /getting-started/directory-structure/
|
||||||
[`Format` function]: /functions/format/
|
[`Format` function]: /functions/format/
|
||||||
[front matter]: /content-management/front-matter/
|
[front matter]: /content-management/front-matter/
|
||||||
[getpage]: /functions/getpage/
|
[getpage]: /functions/getpage/
|
||||||
[homepage]: /templates/homepage/
|
[homepage]: /templates/homepage/
|
||||||
[homepage]: /templates/homepage/
|
[homepage]: /templates/homepage/
|
||||||
[mentalmodel]: http://webstyleguide.com/wsg3/3-information-architecture/3-site-structure.html
|
[mentalmodel]: https://webstyleguide.com/wsg3/3-information-architecture/3-site-structure.html
|
||||||
[pagevars]: /variables/page/
|
[pagevars]: /variables/page/
|
||||||
[partials]: /templates/partials/
|
[partials]: /templates/partials/
|
||||||
[RSS 2.0]: http://cyber.law.harvard.edu/rss/rss.html "RSS 2.0 Specification"
|
[RSS 2.0]: https://cyber.harvard.edu/rss/rss.html "RSS 2.0 Specification"
|
||||||
[rss]: /templates/rss/
|
[rss]: /templates/rss/
|
||||||
[sections]: /content-management/sections/
|
[sections]: /content-management/sections/
|
||||||
[sectiontemps]: /templates/section-templates/
|
[sectiontemps]: /templates/section-templates/
|
||||||
|
|
|
@ -43,7 +43,7 @@ For multilingual sites, we also create a Sitemap index. You can provide a custom
|
||||||
|
|
||||||
## Hugo’s sitemap.xml
|
## Hugo’s sitemap.xml
|
||||||
|
|
||||||
This template respects the version 0.9 of the [Sitemap Protocol](http://www.sitemaps.org/protocol.html).
|
This template respects the version 0.9 of the [Sitemap Protocol](https://www.sitemaps.org/protocol.html).
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
|
{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
|
||||||
|
|
|
@ -39,7 +39,6 @@ The `.File` object contains the following fields:
|
||||||
.File.BaseFileName
|
.File.BaseFileName
|
||||||
: the filename without extension (e.g., `foo.en`)
|
: the filename without extension (e.g., `foo.en`)
|
||||||
|
|
||||||
|
|
||||||
.File.Ext
|
.File.Ext
|
||||||
: the file extension of the content file (e.g., `md`); this can also be called using `.File.Extension` as well. Note that it is *only* the extension without `.`.
|
: the file extension of the content file (e.g., `md`); this can also be called using `.File.Extension` as well. Note that it is *only* the extension without `.`.
|
||||||
|
|
||||||
|
@ -49,4 +48,7 @@ The `.File` object contains the following fields:
|
||||||
.File.Dir
|
.File.Dir
|
||||||
: given the path `content/posts/dir1/dir2/`, the relative directory path of the content file will be returned (e.g., `posts/dir1/dir2/`). Note that the path separator (`\` or `/`) could be dependent on the operating system.
|
: given the path `content/posts/dir1/dir2/`, the relative directory path of the content file will be returned (e.g., `posts/dir1/dir2/`). Note that the path separator (`\` or `/`) could be dependent on the operating system.
|
||||||
|
|
||||||
|
.File.UniqueID
|
||||||
|
: the MD5-checksum of the content file's path.
|
||||||
|
|
||||||
[Multilingual]: /content-management/multilingual/
|
[Multilingual]: /content-management/multilingual/
|
||||||
|
|
|
@ -131,7 +131,7 @@ See also `.ExpiryDate`, `.Date`, `.PublishDate`, and [`.GitInfo`][gitinfo].
|
||||||
|
|
||||||
.RawContent
|
.RawContent
|
||||||
: raw markdown content without the front matter. Useful with [remarkjs.com](
|
: raw markdown content without the front matter. Useful with [remarkjs.com](
|
||||||
http://remarkjs.com)
|
https://remarkjs.com)
|
||||||
|
|
||||||
.ReadingTime
|
.ReadingTime
|
||||||
: the estimated time, in minutes, it takes to read the content.
|
: the estimated time, in minutes, it takes to read the content.
|
||||||
|
@ -179,8 +179,8 @@ http://remarkjs.com)
|
||||||
.Type
|
.Type
|
||||||
: the [content type](/content-management/types/) of the content (e.g., `posts`).
|
: the [content type](/content-management/types/) of the content (e.g., `posts`).
|
||||||
|
|
||||||
.UniqueID
|
.UniqueID (deprecated)
|
||||||
: the MD5-checksum of the content file's path.
|
: the MD5-checksum of the content file's path. This variable is deprecated and will be removed, use `.File.UniqueID` instead.
|
||||||
|
|
||||||
.Weight
|
.Weight
|
||||||
: assigned weight (in the front matter) to this content, used in sorting.
|
: assigned weight (in the front matter) to this content, used in sorting.
|
||||||
|
|
|
@ -34,7 +34,7 @@ features:
|
||||||
sections:
|
sections:
|
||||||
- heading: "100s of Themes"
|
- heading: "100s of Themes"
|
||||||
cta: Check out the Hugo's themes.
|
cta: Check out the Hugo's themes.
|
||||||
link: http://themes.gohugo.io/
|
link: https://themes.gohugo.io/
|
||||||
color_classes: bg-accent-color white
|
color_classes: bg-accent-color white
|
||||||
image: /images/homepage-screenshot-hugo-themes.jpg
|
image: /images/homepage-screenshot-hugo-themes.jpg
|
||||||
copy: "Hugo provides a robust theming system that is easy to implement but capable of producing even the most complicated websites."
|
copy: "Hugo provides a robust theming system that is easy to implement but capable of producing even the most complicated websites."
|
||||||
|
|
|
@ -3120,9 +3120,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Jsonify": {
|
"Jsonify": {
|
||||||
"Description": "Jsonify encodes a given object to JSON.",
|
"Description": "Jsonify encodes a given object to JSON. To pretty print the JSON, pass a map\nor dictionary of options as the first argument. Supported options are\n\"prefix\" and \"indent\". Each JSON element in the output will begin on a new\nline beginning with prefix followed by one or more copies of indent according\nto the indentation nesting.",
|
||||||
"Args": [
|
"Args": [
|
||||||
"v"
|
"args"
|
||||||
],
|
],
|
||||||
"Aliases": [
|
"Aliases": [
|
||||||
"jsonify"
|
"jsonify"
|
||||||
|
@ -3131,6 +3131,10 @@
|
||||||
[
|
[
|
||||||
"{{ (slice \"A\" \"B\" \"C\") | jsonify }}",
|
"{{ (slice \"A\" \"B\" \"C\") | jsonify }}",
|
||||||
"[\"A\",\"B\",\"C\"]"
|
"[\"A\",\"B\",\"C\"]"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"{{ (slice \"A\" \"B\" \"C\") | jsonify (dict \"indent\" \" \") }}",
|
||||||
|
"[\n \"A\",\n \"B\",\n \"C\"\n]"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -3866,6 +3870,12 @@
|
||||||
],
|
],
|
||||||
"Examples": []
|
"Examples": []
|
||||||
},
|
},
|
||||||
|
"PostProcess": {
|
||||||
|
"Description": "",
|
||||||
|
"Args": null,
|
||||||
|
"Aliases": null,
|
||||||
|
"Examples": null
|
||||||
|
},
|
||||||
"ToCSS": {
|
"ToCSS": {
|
||||||
"Description": "ToCSS converts the given Resource to CSS. You can optional provide an Options\nobject or a target path (string) as first argument.",
|
"Description": "ToCSS converts the given Resource to CSS. You can optional provide an Options\nobject or a target path (string) as first argument.",
|
||||||
"Args": [
|
"Args": [
|
||||||
|
@ -4515,7 +4525,7 @@
|
||||||
"Examples": [
|
"Examples": [
|
||||||
[
|
[
|
||||||
"{{ \"I :heart: Hugo\" | emojify }}",
|
"{{ \"I :heart: Hugo\" | emojify }}",
|
||||||
"I ❤ Hugo"
|
"I ❤️ Hugo"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,7 +3,7 @@ publish = "public"
|
||||||
command = "hugo --gc --minify"
|
command = "hugo --gc --minify"
|
||||||
|
|
||||||
[context.production.environment]
|
[context.production.environment]
|
||||||
HUGO_VERSION = "0.68.3"
|
HUGO_VERSION = "0.69.2"
|
||||||
HUGO_ENV = "production"
|
HUGO_ENV = "production"
|
||||||
HUGO_ENABLEGITINFO = "true"
|
HUGO_ENABLEGITINFO = "true"
|
||||||
|
|
||||||
|
@ -11,20 +11,20 @@ HUGO_ENABLEGITINFO = "true"
|
||||||
command = "hugo --gc --minify --enableGitInfo"
|
command = "hugo --gc --minify --enableGitInfo"
|
||||||
|
|
||||||
[context.split1.environment]
|
[context.split1.environment]
|
||||||
HUGO_VERSION = "0.68.3"
|
HUGO_VERSION = "0.69.2"
|
||||||
HUGO_ENV = "production"
|
HUGO_ENV = "production"
|
||||||
|
|
||||||
[context.deploy-preview]
|
[context.deploy-preview]
|
||||||
command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
|
command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
|
||||||
|
|
||||||
[context.deploy-preview.environment]
|
[context.deploy-preview.environment]
|
||||||
HUGO_VERSION = "0.68.3"
|
HUGO_VERSION = "0.69.2"
|
||||||
|
|
||||||
[context.branch-deploy]
|
[context.branch-deploy]
|
||||||
command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
|
command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
|
||||||
|
|
||||||
[context.branch-deploy.environment]
|
[context.branch-deploy.environment]
|
||||||
HUGO_VERSION = "0.68.3"
|
HUGO_VERSION = "0.69.2"
|
||||||
|
|
||||||
[context.next.environment]
|
[context.next.environment]
|
||||||
HUGO_ENABLEGITINFO = "true"
|
HUGO_ENABLEGITINFO = "true"
|
||||||
|
|
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 125 KiB |
Before Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 54 KiB |