Convert Figma logo to code with AI

gohugoio logohugo

The world’s fastest framework for building websites.

74,645
7,450
74,645
471

Top Related Projects

16,839

A simpler site generator. Transforms a directory of templates (of varying types) into HTML.

55,199

The best React-based framework with performance, scalability and security built in.

124,777

The React Framework

22,485

πŸ“ Minimalistic Vue-powered static site generator

39,168

A fast, simple & powerful blog framework, powered by Node.js.

Quick Overview

Hugo is a fast and flexible static site generator written in Go. It takes a directory with content and templates and renders them into a full HTML website, making it ideal for building blogs, documentation sites, and other static web content.

Pros

  • Extremely fast build times, even for large sites
  • Flexible content management with support for various formats (Markdown, YAML, JSON, etc.)
  • Built-in templates and themes for quick setup
  • Robust asset pipeline with fingerprinting and minification

Cons

  • Steeper learning curve compared to some other static site generators
  • Limited plugin ecosystem compared to alternatives like Jekyll
  • Some advanced features require knowledge of Go templating language

Getting Started

  1. Install Hugo:

    # On macOS
    brew install hugo
    
    # On Windows
    choco install hugo -confirm
    
    # On Linux
    snap install hugo
    
  2. Create a new site:

    hugo new site mysite
    cd mysite
    
  3. Add a theme:

    git init
    git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
    echo "theme = 'ananke'" >> config.toml
    
  4. Create content:

    hugo new posts/my-first-post.md
    
  5. Start the Hugo server:

    hugo server -D
    
  6. Build the site:

    hugo
    

Your static site will be generated in the public directory, ready for deployment.

Competitor Comparisons

16,839

A simpler site generator. Transforms a directory of templates (of varying types) into HTML.

Pros of Eleventy

  • More flexible templating options, supporting multiple languages (Nunjucks, Liquid, Handlebars, etc.)
  • Simpler setup and configuration, with a focus on ease of use
  • Better performance for smaller sites due to its lightweight nature

Cons of Eleventy

  • Slower build times for large sites compared to Hugo's blazing-fast performance
  • Less built-in functionality, often requiring additional plugins or custom code
  • Smaller ecosystem and community compared to Hugo's mature and extensive resources

Code Comparison

Hugo (Go template):

{{ range .Pages }}
  <h2>{{ .Title }}</h2>
  {{ .Content }}
{{ end }}

Eleventy (Nunjucks):

{% for post in collections.posts %}
  <h2>{{ post.data.title }}</h2>
  {{ post.templateContent | safe }}
{% endfor %}

Both Hugo and Eleventy are popular static site generators, but they cater to different needs. Hugo excels in speed and built-in features, making it ideal for large sites with complex requirements. Eleventy, on the other hand, offers more flexibility in templating and a gentler learning curve, making it a great choice for smaller projects or developers who prefer a more customizable approach. The choice between the two often depends on the specific needs of the project and the developer's preferences.

55,199

The best React-based framework with performance, scalability and security built in.

Pros of Gatsby

  • Rich ecosystem of plugins and themes
  • Built-in GraphQL for data querying and manipulation
  • Hot reloading for faster development

Cons of Gatsby

  • Steeper learning curve, especially for developers new to React
  • Longer build times for large sites
  • Higher resource consumption

Code Comparison

Hugo (config.toml):

baseURL = "https://example.com"
languageCode = "en-us"
title = "My Hugo Site"
theme = "ananke"

Gatsby (gatsby-config.js):

module.exports = {
  siteMetadata: {
    title: `My Gatsby Site`,
    description: `A sample Gatsby site`,
    author: `@gatsbyjs`,
  },
  plugins: [`gatsby-plugin-react-helmet`],
}

Both Hugo and Gatsby are popular static site generators, but they cater to different needs. Hugo is known for its speed and simplicity, making it ideal for content-focused websites. Gatsby, on the other hand, leverages React and GraphQL to create more dynamic and interactive web applications. While Hugo excels in build speed and resource efficiency, Gatsby offers more flexibility for complex data handling and modern web development practices. The choice between the two depends on the project requirements, team expertise, and desired features.

124,777

The React Framework

Pros of Next.js

  • Dynamic content: Supports server-side rendering and API routes
  • React-based: Leverages React's ecosystem and component-based architecture
  • Automatic code splitting: Optimizes performance by loading only necessary JavaScript

Cons of Next.js

  • Steeper learning curve: Requires knowledge of React and Node.js
  • More complex setup: Needs additional configuration for advanced features
  • Higher resource usage: Consumes more server resources due to server-side rendering

Code Comparison

Next.js (React component):

import { useState } from 'react'

export default function Counter() {
  const [count, setCount] = useState(0)
  return <button onClick={() => setCount(count + 1)}>{count}</button>
}

Hugo (Go template):

{{ $count := 0 }}
<button onclick="this.textContent = ++this.dataset.count" data-count="{{ $count }}">
  {{ $count }}
</button>

The Next.js example demonstrates a React component with state management, while the Hugo example shows a static template with client-side JavaScript for interactivity. Next.js offers more flexibility for dynamic content, but Hugo's approach is simpler for static sites.

22,485

πŸ“ Minimalistic Vue-powered static site generator

Pros of VuePress

  • Built on Vue.js, offering a familiar ecosystem for Vue developers
  • Includes a default theme optimized for technical documentation
  • Supports Vue components in Markdown for enhanced interactivity

Cons of VuePress

  • Slower build times for large sites compared to Hugo
  • Less flexibility for non-documentation sites
  • Smaller ecosystem of themes and plugins

Code Comparison

VuePress (Vue component in Markdown):

::: v-pre
{{ This will be displayed as-is }}
:::

Hugo (Shortcode):

{{< myshortcode >}}

Summary

VuePress excels in creating documentation sites with Vue.js integration, while Hugo offers faster build times and greater versatility for various types of websites. VuePress provides a smoother experience for Vue developers, but Hugo's extensive theme and plugin ecosystem gives it an edge in customization options. The choice between the two depends on the specific project requirements, development team expertise, and desired site complexity.

39,168

A fast, simple & powerful blog framework, powered by Node.js.

Pros of Hexo

  • Written in JavaScript, making it more accessible for web developers
  • Extensive plugin system for easy customization
  • Supports multiple templating engines (EJS, Pug, Nunjucks)

Cons of Hexo

  • Slower build times for large sites compared to Hugo
  • Less active development and smaller community
  • Limited multilingual support out of the box

Code Comparison

Hexo configuration (hexo.config.yml):

title: My Site
author: John Doe
language: en
theme: landscape

Hugo configuration (config.toml):

baseURL = "http://example.org/"
languageCode = "en-us"
title = "My Site"
theme = "ananke"

Both Hugo and Hexo are popular static site generators, but they differ in their approach and target audience. Hugo, written in Go, is known for its blazing-fast build times and robust multilingual support. It's well-suited for large sites and offers a wide range of themes and features out of the box.

Hexo, on the other hand, caters more to JavaScript developers and offers greater flexibility through its plugin system. It's easier to extend and customize for those familiar with Node.js ecosystems. However, it may struggle with performance on larger sites compared to Hugo.

Ultimately, the choice between Hugo and Hexo depends on the developer's preferences, the project's requirements, and the desired level of customization and performance.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Hugo

A fast and flexible static site generator built with love by bep, spf13, and friends in Go.


GoDoc Tests on Linux, MacOS and Windows Go Report Card

Website | Installation | Documentation | Support | Contributing | Mastodon | X

Overview

Hugo is a static site generator written in Go, optimized for speed and designed for flexibility. With its advanced templating system and fast asset pipelines, Hugo renders a complete site in seconds, often less.

Due to its flexible framework, multilingual support, and powerful taxonomy system, Hugo is widely used to create:

  • Corporate, government, nonprofit, education, news, event, and project sites
  • Documentation sites
  • Image portfolios
  • Landing pages
  • Business, professional, and personal blogs
  • Resumes and CVs

Use Hugo's embedded web server during development to instantly see changes to content, structure, behavior, and presentation. Then deploy the site to your host, or push changes to your Git provider for automated builds and deployment.

Hugo's fast asset pipelines include:

  • Image processing – Convert, resize, crop, rotate, adjust colors, apply filters, overlay text and images, and extract EXIF data
  • JavaScript bundling – Transpile TypeScript and JSX to JavaScript, bundle, tree shake, minify, create source maps, and perform SRI hashing.
  • Sass processing – Transpile Sass to CSS, bundle, tree shake, minify, create source maps, perform SRI hashing, and integrate with PostCSS
  • Tailwind CSS processing – Compile Tailwind CSS utility classes into standard CSS, bundle, tree shake, optimize, minify, perform SRI hashing, and integrate with PostCSS

And with Hugo Modules, you can share content, assets, data, translations, themes, templates, and configuration with other projects via public or private Git repositories.

See the features section of the documentation for a comprehensive summary of Hugo's capabilities.

Sponsors

Β 

Linode Β Β Β  Route Planning & Route Optimization Software

Installation

Install Hugo from a prebuilt binary, package manager, or package repository. Please see the installation instructions for your operating system:

Build from source

Hugo is available in two editions: standard and extended. With the extended edition you can:

  • Encode to the WebP format when processing images. You can decode WebP images with either edition.
  • Transpile Sass to CSS using the embedded LibSass transpiler. The extended edition is not required to use the Dart Sass transpiler.

Prerequisites to build Hugo from source:

  • Standard edition: Go 1.20 or later
  • Extended edition: Go 1.20 or later, and GCC

Build the standard edition:

go install github.com/gohugoio/hugo@latest

Build the extended edition:

CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest

Star History

Star History Chart

Documentation

Hugo's documentation includes installation instructions, a quick start guide, conceptual explanations, reference information, and examples.

Please submit documentation issues and pull requests to the documentation repository.

Support

Please do not use the issue queue for questions or troubleshooting. Unless you are certain that your issue is a software defect, use the forum.

HugoҀ™s forum is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about requesting help before asking your first question.

Contributing

You can contribute to the Hugo project by:

Please submit documentation issues and pull requests to the documentation repository.

If you have an idea for an enhancement or new feature, create a new topic on the forum in the "Feature" category. This will help you to:

  • Determine if the capability already exists
  • Measure interest
  • Refine the concept

If there is sufficient interest, create a proposal. Do not submit a pull request until the project lead accepts the proposal.

For a complete guide to contributing to Hugo, see the Contribution Guide.

Dependencies

Hugo stands on the shoulders of great open source libraries. Run hugo env --logLevel info to display a list of dependencies.

See current dependencies
cloud.google.com/go/compute/metadata="v0.2.3"
cloud.google.com/go/iam="v1.1.5"
cloud.google.com/go/storage="v1.35.1"
cloud.google.com/go="v0.110.10"
github.com/Azure/azure-sdk-for-go/sdk/azcore="v1.9.0"
github.com/Azure/azure-sdk-for-go/sdk/azidentity="v1.4.0"
github.com/Azure/azure-sdk-for-go/sdk/internal="v1.5.0"
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob="v1.2.0"
github.com/Azure/go-autorest/autorest/to="v0.4.0"
github.com/AzureAD/microsoft-authentication-library-for-go="v1.2.0"
github.com/BurntSushi/locker="v0.0.0-20171006230638-a6e239ea1c69"
github.com/alecthomas/chroma/v2="v2.14.0"
github.com/armon/go-radix="v1.0.1-0.20221118154546-54df44f2176c"
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream="v1.5.4"
github.com/aws/aws-sdk-go-v2/config="v1.26.1"
github.com/aws/aws-sdk-go-v2/credentials="v1.16.12"
github.com/aws/aws-sdk-go-v2/feature/ec2/imds="v1.14.10"
github.com/aws/aws-sdk-go-v2/feature/s3/manager="v1.15.7"
github.com/aws/aws-sdk-go-v2/internal/configsources="v1.3.5"
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2="v2.6.5"
github.com/aws/aws-sdk-go-v2/internal/ini="v1.7.2"
github.com/aws/aws-sdk-go-v2/internal/v4a="v1.2.9"
github.com/aws/aws-sdk-go-v2/service/cloudfront="v1.35.4"
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding="v1.10.4"
github.com/aws/aws-sdk-go-v2/service/internal/checksum="v1.2.9"
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url="v1.10.9"
github.com/aws/aws-sdk-go-v2/service/internal/s3shared="v1.16.9"
github.com/aws/aws-sdk-go-v2/service/s3="v1.47.5"
github.com/aws/aws-sdk-go-v2/service/sso="v1.18.5"
github.com/aws/aws-sdk-go-v2/service/ssooidc="v1.21.5"
github.com/aws/aws-sdk-go-v2/service/sts="v1.26.5"
github.com/aws/aws-sdk-go-v2="v1.26.1"
github.com/aws/aws-sdk-go="v1.50.7"
github.com/aws/smithy-go="v1.20.2"
github.com/bep/clocks="v0.5.0"
github.com/bep/debounce="v1.2.0"
github.com/bep/gitmap="v1.1.2"
github.com/bep/goat="v0.5.0"
github.com/bep/godartsass/v2="v2.0.0"
github.com/bep/godartsass="v1.2.0"
github.com/bep/golibsass="v1.1.1"
github.com/bep/gowebp="v0.3.0"
github.com/bep/lazycache="v0.4.0"
github.com/bep/logg="v0.4.0"
github.com/bep/mclib="v1.20400.20402"
github.com/bep/overlayfs="v0.9.2"
github.com/bep/simplecobra="v0.4.0"
github.com/bep/tmc="v0.5.1"
github.com/clbanning/mxj/v2="v2.7.0"
github.com/cli/safeexec="v1.0.1"
github.com/cpuguy83/go-md2man/v2="v2.0.3"
github.com/disintegration/gift="v1.2.1"
github.com/dlclark/regexp2="v1.11.0"
github.com/dustin/go-humanize="v1.0.1"
github.com/evanw/esbuild="v0.21.4"
github.com/fatih/color="v1.16.0"
github.com/frankban/quicktest="v1.14.6"
github.com/fsnotify/fsnotify="v1.7.0"
github.com/getkin/kin-openapi="v0.123.0"
github.com/ghodss/yaml="v1.0.0"
github.com/go-openapi/jsonpointer="v0.20.2"
github.com/go-openapi/swag="v0.22.8"
github.com/gobuffalo/flect="v1.0.2"
github.com/gobwas/glob="v0.2.3"
github.com/gohugoio/go-i18n/v2="v2.1.3-0.20230805085216-e63c13218d0e"
github.com/gohugoio/httpcache="v0.7.0"
github.com/gohugoio/hugo-goldmark-extensions/extras="v0.2.0"
github.com/gohugoio/hugo-goldmark-extensions/passthrough="v0.2.0"
github.com/gohugoio/locales="v0.14.0"
github.com/gohugoio/localescompressed="v1.0.1"
github.com/golang-jwt/jwt/v5="v5.1.0"
github.com/golang/groupcache="v0.0.0-20210331224755-41bb18bfe9da"
github.com/golang/protobuf="v1.5.3"
github.com/google/go-cmp="v0.6.0"
github.com/google/s2a-go="v0.1.7"
github.com/google/uuid="v1.4.0"
github.com/google/wire="v0.5.0"
github.com/googleapis/enterprise-certificate-proxy="v0.3.2"
github.com/googleapis/gax-go/v2="v2.12.0"
github.com/gorilla/websocket="v1.5.1"
github.com/hairyhenderson/go-codeowners="v0.4.0"
github.com/hashicorp/golang-lru/v2="v2.0.7"
github.com/invopop/yaml="v0.2.0"
github.com/jdkato/prose="v1.2.1"
github.com/jmespath/go-jmespath="v0.4.0"
github.com/josharian/intern="v1.0.0"
github.com/kr/pretty="v0.3.1"
github.com/kr/text="v0.2.0"
github.com/kylelemons/godebug="v1.1.0"
github.com/kyokomi/emoji/v2="v2.2.12"
github.com/mailru/easyjson="v0.7.7"
github.com/makeworld-the-better-one/dither/v2="v2.4.0"
github.com/marekm4/color-extractor="v1.2.1"
github.com/mattn/go-colorable="v0.1.13"
github.com/mattn/go-isatty="v0.0.20"
github.com/mattn/go-runewidth="v0.0.9"
github.com/mitchellh/hashstructure="v1.1.0"
github.com/mitchellh/mapstructure="v1.5.1-0.20231216201459-8508981c8b6c"
github.com/mohae/deepcopy="v0.0.0-20170929034955-c48cc78d4826"
github.com/muesli/smartcrop="v0.3.0"
github.com/niklasfasching/go-org="v1.7.0"
github.com/olekukonko/tablewriter="v0.0.5"
github.com/pbnjay/memory="v0.0.0-20210728143218-7b4eea64cf58"
github.com/pelletier/go-toml/v2="v2.2.2"
github.com/perimeterx/marshmallow="v1.1.5"
github.com/pkg/browser="v0.0.0-20210911075715-681adbf594b8"
github.com/pkg/errors="v0.9.1"
github.com/rogpeppe/go-internal="v1.12.0"
github.com/russross/blackfriday/v2="v2.1.0"
github.com/rwcarlsen/goexif="v0.0.0-20190401172101-9e8deecbddbd"
github.com/sass/dart-sass/compiler="1.77.5"
github.com/sass/dart-sass/implementation="1.77.5"
github.com/sass/dart-sass/protocol="2.7.1"
github.com/sass/libsass="3.6.5"
github.com/spf13/afero="v1.11.0"
github.com/spf13/cast="v1.6.0"
github.com/spf13/cobra="v1.8.0"
github.com/spf13/fsync="v0.10.1"
github.com/spf13/pflag="v1.0.5"
github.com/tdewolff/minify/v2="v2.20.20"
github.com/tdewolff/parse/v2="v2.7.13"
github.com/webmproject/libwebp="v1.3.2"
github.com/yuin/goldmark-emoji="v1.0.3"
github.com/yuin/goldmark="v1.7.4"
go.opencensus.io="v0.24.0"
go.uber.org/automaxprocs="v1.5.3"
gocloud.dev="v0.36.0"
golang.org/x/crypto="v0.23.0"
golang.org/x/exp="v0.0.0-20221031165847-c99f073a8326"
golang.org/x/image="v0.16.0"
golang.org/x/mod="v0.17.0"
golang.org/x/net="v0.25.0"
golang.org/x/oauth2="v0.15.0"
golang.org/x/sync="v0.7.0"
golang.org/x/sys="v0.20.0"
golang.org/x/text="v0.15.0"
golang.org/x/time="v0.5.0"
golang.org/x/tools="v0.20.0"
golang.org/x/xerrors="v0.0.0-20231012003039-104605ab7028"
google.golang.org/api="v0.152.0"
google.golang.org/genproto/googleapis/api="v0.0.0-20231120223509-83a465c0220f"
google.golang.org/genproto/googleapis/rpc="v0.0.0-20231120223509-83a465c0220f"
google.golang.org/genproto="v0.0.0-20231120223509-83a465c0220f"
google.golang.org/grpc="v1.59.0"
google.golang.org/protobuf="v1.33.0"
gopkg.in/yaml.v2="v2.4.0"
gopkg.in/yaml.v3="v3.0.1"
software.sslmate.com/src/go-pkcs12="v0.2.0"