使用Hugo和Netlify构建你的第一个Jamstack应用

关于部署,您可以将其部署到GitHub Pages、Netlify、Azure Static Web Apps等等。

我们将使用Hugo进行Jamstack开发,并使用Netlify来托管我们的站点。

本教程假设您对Web有基本的了解,并且知道如何使用Git。

让我们开始吧。

#1. 安装前提条件:Go和Git

要安装Hugo,您需要两样东西:Git和Go。我们需要Git来简化我们的构建工作流程(稍后您将在Netlify中看到它)。Hugo是基于Go构建的,所以需要Go。

我们使用在Windows 11上运行的WSL 2上的Ubuntu。我们直接从Windows访问Ubuntu内核。

还阅读: Windows 11 Meets Linux: A Deep Dive into WSL2 Capabilities

您可以选择操作系统,Windows、Linux或Mac。

安装Git

在Ubuntu中,您可以通过运行以下命令来安装Git。

$ sudo apt update

$ sudo apt install git

对于Windows,您需要下载Windows二进制安装程序。请查看我们的完整的 Git installation guide.

要验证Git是否正确安装,请键入以下命令。

nitt@logan99:~$ git --version

git version 2.34.1

安装Go

现在,是时候安装Go了。为此,在Linux上运行几个命令。所以让我们逐步进行。

步骤1:删除先前的Go安装并创建本地Go树。

$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.4.linux-amd64.tar.gz

步骤2:自定义PATH环境变量

export PATH=$PATH:/usr/local/go/bi

步骤3:最后,检查Golang是否正确安装。

$ go version.

#output
go version go1.18.1 linux/amd64

太棒了,现在我们准备安装Hugo!

安装Hugo

根据您使用的是 Homebrew 还是Chocolately,您将需要使用以下其中一条命令。

对于Homebrew:

$ brew install hugo

对于Chocolatey:

$ brew install hugo -confirm

如果您没有使用它们中的任何一个,您可以直接从源代码安装。

$ mkdir $HOME/src

cd $HOME/src

git clone https://github.com/gohugoio/hugo.git

cd hugo

go install  --tags extended

要检查Hugo是否成功安装,请运行以下命令。

$ hugo -version
开始构建站点...
hugo v0.92.2+extended linux/amd64 BuildDate=2023-01-31T11:11:57Z VendorInfo=ubuntu:0.92.2-1ubuntu0.1
INFO 2023/05/05 12:20:38 syncing static files to /home/nitt/yaoweibin/public/

                   | EN
-------------------+-----
  Pages            | 35
  Paginator pages  |  0
  Non-page files   |  0
  Static files     | 23
  Processed images |  0
  Aliases          |  0
  Sitemaps         |  1
  Cleaned          |  0

Total in 117 ms

#2. 创建Hugo站点

Hugo提供了一种创建站点的简单方法。要这样做,请运行以下命令。

$ hugo new site yaoweibin-jamstack

恭喜!您的新 Hugo 网站已创建在 /home/nitt/yaoweibin-jamstack。

还有几个步骤,您就可以开始了:

1. 在同名文件夹中下载一个主题。
从 https://themes.gohugo.io/ 选择一个主题,
或使用 “hugo new theme ” 命令创建自己的主题。
2. 或许您想要添加一些内容。您可以使用 “hugo new /.” 添加单个文件。
3. 通过 “hugo server” 启动内置的实时服务器。

请访问 https://gohugo.io/ 查阅快速入门指南和完整文档。

#3. 选择一个 Hugo 主题

Hugo 提供了访问 tons of themes。这些主题为您的项目提供了一个起点。要使用 Hugo 构建 Jamstack 网站,您需要一个主题。

#4. 使用 Jamstack 创建一个小型企业网站

在本教程中,我们将使用 Hugo Hero 主题。这个多功能主题提供了全宽度区块和通过 Markdown 创建作品集等功能。

要安装主题,请复制其仓库链接并克隆。在继续之前,请确保您在根目录中。

git clone https://github.com/zerostaticthemes/hugo-hero-theme.git themes/hugo-hero-theme
#output

Cloning into 'themes/hugo-hero-theme'...

remote: Enumerating objects: 1141, done.

remote: Total 1141 (delta 0), reused 0 (delta 0), pack-reused 1141

Receiving objects: 100% (1141/1141), 28.17 MiB | 58.00 KiB/s, done.

Resolving deltas: 100% (489/489), done.

复制默认内容

要使用网站的默认内容,请运行以下命令。

$ cp -a themes/hugo-hero-theme/exampleSite/. .

它将内容从 exampleSite 文件夹复制到您的网站的根目录中。

更新 Config.toml 文件

接下来,我们需要编辑 Config.toml 文件。它存储项目的配置信息,为了使 Jamstack 网站正常工作,正确设置这个文件是必要的。

现在,您需要编辑以下行。

baseURL = "/"

themesDir = "themes"

theme = "hugo-hero-theme"

注意:随着项目的进展,您需要不断更新 Config.toml 文件。另外,由于使用了默认内容,您的 Config.toml 已经更新以适应示例内容。

测试我们的 Jamstack 网站

要运行我们的网站,我们需要再次使用 hugo 命令生成 Hugo 网站。

$ hugo

接下来,我们启动服务器。为此,请运行 hugo serve 命令。

$ hugo serve
#输出

nitt@logan99:~/yaoweibin$ hugo server

端口1313已被占用, 尝试使用可用端口

开始构建站点 ...

hugo v0.92.2+extended linux/amd64 BuildDate=2023-01-31T11:11:57Z VendorInfo=ubuntu:0.92.2-1ubuntu0.1

                   | EN

-------------------+-----

  页面            | 35

  分页器页面  |  0

  非页面文件   |  0

  静态文件     | 23

  处理的图片 |  0

  别名          |  0

  站点地图     |  1

  清理          |  0

构建完成,共耗时 71 毫秒

正在监视更改 /home/nitt/yaoweibin/{archetypes,content,data,layouts,static,themes}

正在监视配置更改 /home/nitt/yaoweibin/config.toml

环境: "development"

从内存中加载页面

正在运行快速渲染模式。要进行完整重建,请执行 hugo server --disableFastRender

Web 服务器可在 //localhost:42229/ 访问(绑定地址 127.0.0.1)

按 Ctrl+C 停止

注意:您的站点现在已托管并可在127.0.0.1上访问。如果由于某种原因未打开,请尝试打开提供的备用地址。在本例中,它是localhost:42973

编辑主题默认内容

从这里开始,您可以自由编辑默认内容。您可以通过进入Content文件夹来进行编辑。让我们编辑索引页面的内容。要这样做,请转到Content > Work > Index.md

编辑后的内容如下所示。

创建一个博客站点

如果您只想创建一个博客,那么您必须选择一个合适的主题。为此,让我们使用Hyde主题。

与设置新站点的方式类似,您需要运行以下命令。

$ hugo new site yaoweibin-jamstack

$ cd yaoweibin-jamstack/themes

$ git clone https://github.com/spf13/hyde /themes/hyde

接下来,编辑Config.toml文件以添加theme = ‘hyde'值。

创建一个新文章

您必须运行hugo new命令来创建一个新的文章,然后是Markdown文件。

$ hugo new helloyaoweibin.md
#输出

nitt@logan99:~/geefklare-jamstack$ hugo new helloyaoweibin.md

内容 "/home/nitt/geefklare-jamstack/content/helloyaoweibin.md" 已创建

nitt@logan99:~/geefklare-jamstack$

编辑文章

要编辑新创建的hellogeefklare.md 文章,请在首选的文本编辑器中打开helloyaoweibin.md 文件。 

它将显示以下内容。

---

title: "Hello Geekflare"

date: 2023-05-04T11:39:10+05:30

draft: true

---

在这里,您可以在Markdown中添加任何内容。

让我们在Markdown中添加以下内容。

### Hello, World!

This is a new post created to show how easy it is to create **Jamstack website**. 
We’re using Hugo and Netlify to create our *basic Jamstack site*.

将上述内容放入.md文件后,它应该如下所示(根据您的编辑器而定,我们正在使用Visual Studio Code)。

但是,当我们提供服务时,它的外观将完全不同。 

注意:确保将draft值从”true”更改为”false”

太棒了!我们创建了两个Jamstack网站,一个小型业务网站和一个博客。

在编辑网站后,您可以通过运行hugo命令生成文件。它将创建文件并将其放在/public文件夹中。

$ hugo

#5. 将Jamstack站点部署到Netlify

创建完我们的站点后,让我们来部署它们。为此,我们将使用Netlify。

Netlify是一个由CDN支持的服务,为用户提供快速的托管站点。您可以将Netlify与Github连接并自动化该过程。它是一个免费的服务,但某些功能需要付费。

我们的工作是将代码推送到Netlify并让Netlify处理一切。

在本地设置Git仓库

现在是时候设置Git仓库了。

要初始化Git仓库,请在项目的根目录下运行以下命令。

$ git init

接下来,我们需要将主题设置为子模块。这是一个重要的步骤。从技术上讲,它在仓库中创建子仓库。(还记得你是如何通过git clone获取Hugo主题的吗?)这将为您的Jamstack站点提供更多控制权。

例如,您可以下载主题的更新。您还需要这样做,因为Netlify需要作为子模块托管主题。

因此,要将主题添加为子模块,请运行以下命令。

$ git rim --cached themes/hyde

$ git submodule add https://github.com/spf13/hyde themes/hyde
#output

nitt@logan99:~/yaoweibin-jamstack$ git submodule add https://github.com/spf13/hyde themes/hyde

Adding existing repo at 'themes/hyde' to the index

nitt@logan99:~/yaoweibin-jamstack$

在GitHub上创建一个仓库

本地设置完成后,是时候创建一个新的GitHub仓库了。

创建完成后,您需要将其添加到本地仓库中。

$ git remote add origin https://github.com/logan99/yaoweibin-jamstack-tutorial.git

现在进行拉取。

$ git branch -M main

$ git pull origin main

创建新的提交

现在,是时候创建一个新的提交了。运行以下命令将所有文件添加到主分支。

$  git add .

现在,运行提交命令来提交更改。

$ git commit -m “First commit”

最终,将更改推送到GitHub。

#Output

nitt@logan99:~/yaoweibin-jamstack$ git commit -m “First commit”

[main (root-commit) fa69ab2] First commit

21个文件更改,插入1135个

创建模式100644 .gitmodules

创建模式100644 .hugo_build.lock

创建模式100644 archetypes/default.md

创建模式100644 config.toml

创建模式100644 content/helloyaoweibin.md

创建模式100644 public/404.html

创建模式100644 public/apple-touch-icon-144-precomposed.png

创建模式100644 public/categories/index.html

创建模式100644 public/categories/index.xml

创建模式100644 public/css/hyde.css

创建模式100644 public/css/poole.css

创建模式100644 public/css/print.css

创建模式100644 public/css/syntax.css

创建模式100644 public/favicon.png

创建模式100644 public/helloyaoweibin/index.html

创建模式100644 public/index.html

创建模式100644 public/index.xml

创建模式100644 public/sitemap.xml

创建模式100644 public/tags/index.html

创建模式100644 public/tags/index.xml

创建模式160000 themes/hyde

最后,将更改推送到GitHub。

$ git push --set-upstream origin main

注意:您必须输入GitHub用户名和密码才能正常进行工作。

#6. 使用Netlify

非常好,我们的存储库现在已创建。现在,我们转到Netlify。如果您已经拥有帐户,请登录或创建一个新帐户。

对于新帐户,它将立即为您运行向导。否则,您将进入帐户仪表板。如果您进入仪表板,请单击“添加新站点”选项。

在添加新站点下,选择“导入现有项目。

然后它会要求您选择一个Git提供商。由于我们使用的是GitHub,我们将选择它。您还可以选择Bitbucket、GitLab和Azure DevOps。

然后,它会列出您的所有项目。从这里,选择您为此项目创建的GitHub存储库。对于我们来说,它是“yaoweibin-jamstack-tutorial”。您还可以选择上传其他我们创建的项目。

然后它会要求您选择要部署的分支并选择基本的构建设置。现在,您可以将所有设置都设置为默认值。

点击“部署网站”进行部署。

现在,您需要等待Netlify完成操作。部署完成后,消息将显示“您的站点已部署。”

现在,点击左上角的网站。

然而,您会注意到网站未正确加载。这是因为Config.toml文件中的基本URL设置不正确。由于Netlify生成了一个新的项目URL,您必须将其添加到Config.toml文件中。

在我们的例子中,网站位于https://animated-beijinho-2baa8b.netlify.app/

这意味着我们需要将baseURL添加到其中。

要这样做,请转到您的本地设置并更改值。

baseURL = 'https://animated-beijinho-2baa8b.netlify.app/'

languageCode = 'en-us'

title = 'My new Jamstack site'

theme = 'hyde'

要推送更改,您需要运行以下命令。

$ git add .

$ git commit -m “changed baseURL to make it work on Netlify”

Netlify很聪明。当它检测到新的提交时,它会自动重新部署您的网站。

如果您现在加载您的站点,它将完美加载。

太棒了!您已经做到了。我知道有很多东西要学习。但是,一旦您做了几次,您会发现整个过程都很直观。

最后的话

Jamstack已经吸引了新时代的开发人员。它提高了性能,同时也改进了网站的部署方式。像Hugo和Netlify这样的优秀生态系统成员,使Jamstack得以发展壮大。毫无疑问,它将继续蓬勃发展。

接下来,请查看how to deploy the frontend application to Netlify

类似文章